Javascript 无法在NodeJSON中循环json对象
我试图在NODEJS中循环一个JSON对象 我正在尝试检索例如var value=[table][row][0][STATE]或[table][row][1][STATE]或[table][row][2][STATE]的值,但我获取的状态未定义错误?这是通过Json对象循环的正确方法吗Javascript 无法在NodeJSON中循环json对象,javascript,json,node.js,Javascript,Json,Node.js,我试图在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)) {
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文件
{
"table":[
{
"row":[
{
"STATE":"A"
},
{
"COUNT":"107"
}
]
},
{
"row":[
{
"STATE":"I"
},
{
"COUNT":"92"
}
]
},
{
"row":[
{
"STATE":"R"
},
{
"COUNT":"2"
}
]
}
]
}
在你的循环中肯定有一些奇怪的决定。但是,试试这个:
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);
}
}
工作区:
更新:我想补充一点,在JSON中没有理由有额外的
行
键。这确实让嵌套变得更复杂了。为什么不使用var table=obj.table然后使用table.forEach(函数(o){var row=o.row;…})代码>?(另外,您正在使用一些有问题的JS—使用Object.keys(obj).forEach(…)
,而不是for/in,这个JSON非常奇怪:为什么这些东西不按匿名数组位置命名属性?)