我正在尝试遍历通过get请求返回的数据。我试图迭代它,好像是JSON格式,但我是新手,不知道它是否返回它以JSON格式识别的东西,或者它是否将其识别为字符串,这就是为什么我无法让它识别诸如info.data.items之类的东西。这是我使用节点,基本身份验证的获取请求。
以下是我的get请求返回的示例数据以及我实际尝试迭代的内容。
{ “数据”:{ “项”:[{ “日期”: “2017年2月2日”, “收入”:111, “曝光”:000},{ “日期”:“2017-02- 03“,”收入“:123,”展示次数“:0000,},”消息“:”返回前两行。“}
function rData(key, secret, account_id) {
var https = require('https');
var options = {
host: 'api.urlhere.com',
port: 443,
path: 'path',
// authentication headers
headers: {
'Authorization': 'Basic ' + new Buffer(key + ':' + secret).toString('base64')
}
};
var request = https.get(options, function(res) {
var body = "";
res.on('data', function(data) {
body += data;
});
res.on('end', function() {
//console.log(body);
callNextFunction(body);
})
res.on('error', function(e) {
console.log("Got error: " + e.message);
});
});
}
然后这是我试图迭代数据的下一个函数。完成此功能后,我收到错误,
TypeError:无法读取未定义
的属性'items'
function callNextFunction(rBody) {
var rData = rBody;
console.log("Data transfer sucessful: " + rData); // Works up to this point.
rData.data.items.forEach(function(info) {
var rev = info.revenue;
console.log("Revenue: " + rev);
})
}
答案 0 :(得分:2)
查看您的JSON我可以看到以下问题
{"数据" {"项目":[{"日期":" 2017年2月2日"&#34 ;收入":111,"曝光":000},{"日期":" 2017年2月3日""收入&#34 ; 123"曝光":0000,},"消息":"顶 返回了2行。"}< - 这应该是']'不确定
根据您的问题,我认为您想要访问数据的属性。 请尝试以下
function callNextFunction(rBody) {
var rData = JSON.parse(rBody);
console.log("Data transfer sucessful: " + rData); // Works up to this point.
$.each(rData.data.items, function(i, info) {
if (info.date) {
//this info will contain the item with "date" "revenue"...
var rev = info.revenue;
console.log("Revenue: " + rev);
}
else if (info.message) {
// this is the information that contains the "message":"Top 2 rows returned."
}
});
}