Tôi đang làm việc với API twitter và tôi đang gặp phải vấn đề rất khó hiểu.Không thể truy cập mảng Javascript dưới dạng mảng
Tôi có kịch bản sau đây:
const Twitter = require('twitter-api-stream')
const twitterCredentials = require('./credentials').twitter
const twitterApi = new Twitter(twitterCredentials.consumerKey, twitterCredentials.consumerSecret, function(){
console.log(arguments)
})
twitterApi.getUsersTweets('everycolorbot', 1, twitterCredentials.accessToken, twitterCredentials.accessTokenSecret, (error, result) => {
if (error) {
console.error(error)
}
if (result) {
console.log(result) // outputs an array of json objects
console.log(result.length) //outputs 3506 for some reason (it's only an array of 1)
console.log(result[0]) // outputs a opening bracket ('[')
console.log(result[0].text) // outputs undefined
}
})
Đó là gọi hàm sau để tương tác với twitter:
TwitterApi.prototype.getUsersTweets = function (screenName, statusCount, userAccessToken, userRefreshToken,cb) {
var count = statusCount || 10;
var screenName = screenName || "";
_oauth.get(
"https://api.twitter.com/1.1/statuses/user_timeline.json?count=" + count + "&screen_name=" + screenName
, userAccessToken
, userRefreshToken
, cb
);
};
Nó dường như như tôi nhận được kết quả tôi muốn. Khi tôi đăng nhập kết quả, tôi nhận được kết quả sau:
[
{
"created_at": "Thu Sep 01 13:31:23 +0000 2016",
"id": 771339671632838656,
"id_str": "771339671632838656",
"text": "0xe07732",
"truncated": false,
...
}
]
Điều tuyệt vời, một loạt các tweet được giới hạn trong 1 tweet.
Sự cố tôi đang gặp phải là khi tôi cố truy cập mảng này.
console.log(result.length) //outputs 3506 for some reason (it's only an array of 1)
console.log(result[0]) // outputs a opening bracket ('[')
console.log(result[0].text) // outputs undefined
Tôi đọc lại thông qua api docs for the user_timeline nhưng trừ khi tôi hoàn toàn bỏ lỡ, tôi không thấy bất kỳ đề cập đến đầu ra đặc biệt nào.
Bất kỳ ý tưởng nào?
Cập nhật
Cảm ơn @nicematt vì đã chỉ ra câu trả lời đó.
Chỉ cần để xây dựng trên giải pháp, tôi cập nhật mã của tôi để này và bây giờ tôi nhận được kết quả tôi muốn:
if (result) {
let tweet = JSON.parse(result)[0] // parses the json and returns the first index
console.log(tweet.text) // outputs '0xe07732'
}
Thanks for the help!
'' 'JSON.parse (kết quả)' '' – rottenoats
Có vẻ như rằng 'result' là một chuỗi, có thể là một chuỗi JSON ? – Teemu
Vâng, đó có thể là lý do tại sao độ dài trả về 3506. – GuyT