Javascript - 迭代无密钥JSON

时间:2011-08-30 16:23:01

标签: javascript json

我将字符串数组转换为JSON。它看起来像

var data = ["[None]","data","data2"]

所以,没有键/值对。这导致我的JSON迭代轰炸:

      for (var i = 0; i < data.length; i++) {
                            var obj = data[i];
                            alert(obj);
                            for (var key in obj) {
                                var attrName = key;
                                var attrValue = obj[key];
                                alert('key: ' + attrName + 'value: ' + attrValue);
                            }

                    }

我应该找出一种方法来键入每个对象(javascriptserializer从字符串数组创建这个JSON)?或者......你有什么建议吗?

<小时/> 在向大家学习了一些东西之后,我仍然无法迭代数据对象。

for (var i = 0; i < data.length; i++) {
                              var obj = data[i];
                              alert(typeof obj);
                              if (typeof obj === 'object') {
                                  alert(obj);
                                  for (var key in obj) {
                                      var attrName = key;
                                      var attrValue = obj[key];
                                      alert('key: ' + attrName + 'value: ' + attrValue);
                                  }
                              }
                              else {
                                  alert(data[i]);
                              }
                          }

我点击else,但它一次通过数组1个字符。这不是我想要的......

2 个答案:

答案 0 :(得分:4)

看来你有通用的json打印机。通常从服务器获取json时,您在客户端上执行的操作是在了解json的外观的基础上实现的。所以你有点奇怪的是,当你包含简单的字符串时,你试图迭代就像数组包含对象文字。

那说你可以添加一个测试,看看obj是否真的是一个对象。

if (typeof obj === 'object') {
   // now iterate key/vals
}

如果obj实际上是对象,则只迭代值。

答案 1 :(得分:3)

因为它只是一个数组:

var data = ["[None]","data","data2"]
for(var x=0;x<data.length;x++) {
     alert(data[x])  
}