无法遍历nodejs中的json对象

时间:2014-09-02 19:04:51

标签: 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)) {
        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"
            }
         ]
      }
   ]
}

1 个答案:

答案 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密钥。它实际上只是使嵌套更复杂。