Javascript 无法在NodeJSON中循环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)) {

我试图在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文件

{  
   "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.tabletable.forEach(函数(o){var row=o.row;…})?(另外,您正在使用一些有问题的JS—使用
Object.keys(obj).forEach(…)
,而不是for/in,这个JSON非常奇怪:为什么这些东西不按匿名数组位置命名属性?)