JS迭代JSON得到JSON

问题描述:

每一个角色,我有这个,我想迭代,并从它那里得到的值,并设置一个JSON和一些变数,但我现在面临的一些问题阅读它JS迭代JSON得到JSON

这里是我的JSON:

{"bit":[{"id":81,"value":"aaaa"},{"id":83,"value":"bbbb"}]} 

每次我试图重复我得到了一个未定义或我从JSON每一个字符,这是不是我假装:

这里是我已经尝试过:

1)

JSON.stringify(objArray); 
    for (var key in objArray) { 
     if (objArray.hasOwnProperty(key)) { 
     console.log(key + " -> " + objArray[key]); 
     } 
    } 

输出:

0 -> { 
1 -> " 
2 -> b 
3 -> i 
4 -> t 
5 -> " 
... 

2)

JSON.parse(objArray); 
for (var key in objArray) { 
    if (objArray.hasOwnProperty(key)) { 
    console.log(key + " -> " + objArray[key]); 
    } 
} 

的输出结果相同之前

for (var key in objArray) { 
     if (objArray.hasOwnProperty(key)) { 
     console.log(key + " -> " + objArray[key]); 
     } 
    } 

相同输出

我已经尝试过其他的迭代器我看到另一篇文章:

,我怎么遍历和得到81分,AAA; 83,BBB预先

由于

+1

在您的第二例尝试'objArray = JSON.parse(objArray);''作为JSON.parse()来'将返回解析的值,虽然这只会回报你'“位 - > [目标对象],[目标对象]”' – George

+0

我得到[对象对象],[目标对象]当我做到这一点 – Tazz

首先你需要从JSON.parse返回的值,然后你必须遍历数组bitobjArray,因为现在你只能看在顶层的钥匙。

var objArray = '{"bit":[{"id":81,"value":"aaaa"},{"id":83,"value":"bbbb"}]}' 
 
objArray = JSON.parse(objArray); 
 

 
for (var bit in objArray.bit) { 
 
    for (var key in objArray.bit[bit]) { 
 
    if (objArray.bit[bit].hasOwnProperty(key)) { 
 
     console.log(key + " -> " + objArray.bit[bit][key]); 
 
    } 
 
    } 
 
}

+0

它完美的感谢! – Tazz

JSON.parse()需要JSON字符串作为参数,并返回一个JSON对象。 这应该工作,如果JSON字符串是适当的。

var key = JSON.parse(objArray); 
for (key in objArray) { 
    if (objArray.hasOwnProperty(key)) { 
    console.log(key + " -> " + objArray[key]); 
    } 
} 

如果objArray是一个字符串,JSON.parse将解析JSON作为一个字符串:

var output = Object.values(JSON.parse(objArray)["bit"]).map(elt => { 
     return elt.id + '->' + elt.value; 
    }).join(';'); 

    console.log(output); 

每次我试图重复我得到了一个未定义或每次都遇到从JSON单个字符,这是不是我假装

原因:您正在尝试解析的JSON String代替JSON Object

DEMO

var jsonStr = '{"bit":[{"id":81,"value":"aaaa"},{"id":83,"value":"bbbb"}]}'; 
 

 
for (var key in jsonStr) { 
 
    if (jsonStr.hasOwnProperty(key)) { 
 
    console.log(key + " -> " + jsonStr[key]); 
 
    } 
 
}

正确的溶胶ution:

首先转换成JSON StringJSON Object方法JSON.parse()的帮助,然后解析它。

DEMO

var jsonStr = '{"bit":[{"id":81,"value":"aaaa"},{"id":83,"value":"bbbb"}]}'; 
 

 
var jsonObj = JSON.parse(jsonStr); 
 

 
for (var key in jsonObj) { 
 
     if (jsonObj.hasOwnProperty(key)) { 
 
     console.log(key + " -> " , jsonObj[key]); 
 
     } 
 
    }