我有以下JSON对象:
var json = {"tsn": {
"settings":
{"app_name": "TSN", "version": "1.0"},
"occurrences":
["Party", "Music"]
}
};
我真的不明白为什么我不能像这样访问它的值:
json.tsn.forEach(function(item){
console.log(item.settings.app_name);
console.log(item.occurrences);
});
我得到json.tsn.forEach is not a function
。
答案 0 :(得分:1)
forEach
是一种可用于数组的方法;对于非数组对象,它不存在。
事实上,你不需要为你正在做的事情进行迭代。就这样做:
var item = json.tsn;
console.log(item.settings.app_name);
console.log(item.occurrences);
或者,您可以使用Object.keys
获取一系列键,然后您可以继续这样:
Object.keys(json.tsn).forEach(function(key){
var item = json.tsn[key];
console.log(item);
});
答案 1 :(得分:1)
forEach
方法不属于the Object
specification。
要遍历对象的可枚举属性,您应该使用for...in
语句。
var json = {
"tsn": {
"settings": {
"app_name": "TSN",
"version": "1.0"
},
"occurrences": ["Party", "Music"]
}
};
for (var prop in json) {
console.log(json[prop].settings.app_name);
console.log(json[prop].occurrences);
}