基于键迭代Json数组,Key是动态的并且首先获取

时间:2016-11-13 21:54:10

标签: json

我正在努力使用JSON数据,在这里,我首先获取了密钥,因为密钥可能是随机的。之后我想在数组中迭代Key。

<script>
var text = '{"name":["John Johnson", "Cool", "Bay", "Life"],"street":["yyy", "xxx", " 1x"],"phone":["5xx", "12xxx7"]}';

var obj = JSON.parse(text);
var key = Object.keys(obj);
document.write("Keys :" +key);

我从上面的代码中获得了密钥,现在我想在密钥的基础上迭代这些值,为此我编写了下面的代码,但它没有按预期工作。

for(i in key){
   document.write("<br>Key:"+key[i]);
   var key1 = key[i];
   //document.write(obj.key1);
   for(j in key1){
       document.write("-->"+key1[j]);
   }
}

我不确定如何做到这一点。请帮助。

3 个答案:

答案 0 :(得分:0)

在你的for循环中,用in替换,这会给你一个字符串的密钥名称。

然后,您可以obj[key]获取值:

var obj = JSON.parse(text);
var keys = Object.keys(obj);

for(key of keys)
{
    var val = obj[key];
}

答案 1 :(得分:0)

我相信你几乎就在那里。

您需要做的是迭代原始对象(而不是键数组)。要做到这一点,而不是

var key1 = key[i];

使用

var key1 = obj[key[i]];

答案 2 :(得分:0)

试试这个:

&#13;
&#13;
var text = '{"name":["John Johnson", "Cool", "Bay", "Life"],"street":["yyy", "xxx", " 1x"],"phone":["5xx", "12xxx7"]}';

var obj = JSON.parse(text);
var key = Object.keys(obj);

for(var i in key){
   console.log(key[i]+ ":");
   var key1 = obj[key[i]];
   for(j in key1){
     console.log("      "+key1[j]);
   }
}
&#13;
&#13;
&#13;