我试图在NODEJS中循环一个JSON对象。
我试图检索例如var value = [table] [row] [0] [STATE]或[table] [row] [1] [STATE]或[table] [row] [2]的值] [状态]但我得到STATE未定义错误?这是循环Json对象的正确方法吗?
data = JSON.parse(buffer);
for (var obj in data) {
if (data.hasOwnProperty(obj)) {
console.log(obj);
if (obj == "table") {
for (var prop in data[obj]) {
if (data[obj].hasOwnProperty(prop)) {
console.log(prop + ':' + data[obj][prop][0]['STATE']);
console.log(prop + ':' + data[obj][prop][1]['STATE']);
console.log(prop + ':' + data[obj][prop][2]['STATE']);
console.log(prop + ':' + data[obj][prop][0]['COUNT']);
console.log(prop + ':' + data[obj][prop][0]['COUNT']);
console.log(prop + ':' + data[obj][prop][0]['COUNT']);
}
}
}
}
}
JSON FILE
{
"table":[
{
"row":[
{
"STATE":"A"
},
{
"COUNT":"107"
}
]
},
{
"row":[
{
"STATE":"I"
},
{
"COUNT":"92"
}
]
},
{
"row":[
{
"STATE":"R"
},
{
"COUNT":"2"
}
]
}
]
}
答案 0 :(得分:1)
你的循环肯定是一些奇怪的决定。但是,试试这个:
var json = {
"table":[
{ "row":[
{"STATE":"A"},
{"COUNT":"107"}
]
},
{ "row":[
{"STATE":"I"},
{"COUNT":"92"}
]
},
{ "row":[
{"STATE":"R"},
{"COUNT":"2"}
]
}
]
};
var table = json.table;
for( var row in table ) {
for( var field in table[row] ) {
console.log( 'State: ' + table[row][field][0].STATE);
console.log( 'Count: ' + table[row][field][1].COUNT);
}
}
工作jsfiddle:http://jsfiddle.net/pamsvofz/
更新:我想补充一点,确实没有理由在JSON中添加额外的row
密钥。它实际上只是使嵌套更复杂。