我一直在搞乱一些aproaches,但没有成功,我在使用JQuery之前已经成功解析了JSON数据,但现在我无法理解它。
使用此代码,
$.each(data, function(headers, item){
$.each(item, function(){
console.log(item[i].date_c);
i++;
});
});
我可以轻松读取像这样的JSON对象的所有日期:
但是现在我不知道如何在像这样的JSON对象上达到该日期:
正如您所看到的,这是一个新的水平。你能救我一下吗?
提前致谢!
---------------- EDIT 感谢您对我的帮助。 JSON很大,但您可以从这里查看它:http://vader.rice.edu/hed2/wormsr/data.php?kw=him-5
523是一个ID,每个项目都有不同的一个;例如,有4个不同的日期对应一个ID。
答案 0 :(得分:1)
您只是不确定日期会出现在哪里吗?例如如果问题只是让构造中的所有成员对象(无论嵌套多深)命名为“date_c”,那么使用递归。
这未经过测试,但基本逻辑应该有效:只需遍历对象的属性或数组的元素,寻找名为'date_c'的属性。尝试递归到任何可能有孩子的属性或数组元素。
var findThem = function(data) {
var result=null;
// skip literals, they have no children
if (typeof data === 'string' || typeof data === 'number') {
return;
}
if (data && data.constructor && data.constructor.name ==='Array') {
for(var i=data.length-1;i>=0;i--) {
findThem(data[i]);
}
} else if (typeof data === 'object') {
foreach (var prop in data) {
if (data.hasOwnProperty(prop)) {
if (prop=='date_c') {
console.log(data[prop]);
} else {
findThem(data[prop]);
}
}
}
}
}
答案 1 :(得分:1)
通常,JSON对象中的大多数数据都很有用,格式也很稳定。如果可能的话,我会更正,而不是写一个不同的脚本。
至于语法:
您可以自由使用。运算符或对象的数组访问表示法( [] )
所以你可以写点像
//first structure
data['items'][0]['date_c']
//second structure
data[0][523][3]['date_c']
正如您所看到的,数据只是更深层次嵌套,因此解决方案是添加另一个each
,以便您可以再循环一个级别。
// 0 in our example
$.each(jsonData, function(index, firstLevel) {
//523 in the example
$.each(firstLevel, function(anotherindex, secondLevel) {
// 3 in the example
$.each(secondLevel, function(yetAnotherIndex, thirdLevel) {
console.log(thridLevel['date_c']);
});
});
});
请注意,传递给函数( xxxLevel )的参数是JSON格式的对象。