我有一个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]);
}
}和以前一样的输出
3
for (var key in objArray) {
if (objArray.hasOwnProperty(key)) {
console.log(key + " -> " + objArray[key]);
}
}同输出
我已经在另一篇文章中看到了其他迭代器:
我要迭代什么,得到81,aaa;83,bbb
提前感谢
发布于 2017-07-03 08:43:04
首先,您需要从JSON.parse返回值,然后必须迭代objArray的bit数组,因为现在您只查看顶层的键。
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]);
}
}
}
发布于 2017-07-03 08:43:17
如果objArray是字符串,JSON.parse将将json解析为字符串:
var output = Object.values(JSON.parse(objArray)["bit"]).map(elt => {
return elt.id + '->' + elt.value;
}).join(';');
console.log(output);发布于 2017-07-03 10:05:46
每次我试图迭代时,我都没有定义,或者我从json中得到了每个字符,这不是我假装的。
JSON String原因:您正在尝试解析JSON Object而不是JSON Object的
演示
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]);
}
}
正确解决方案:
首先在JSON String方法的帮助下将JSON.parse()转换为JSON Object,然后解析它。
演示
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]);
}
}
https://stackoverflow.com/questions/44881024
复制相似问题