我有一个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]);
}
}
与之前相同的输出
第3
for (var key in objArray) {
if (objArray.hasOwnProperty(key)) {
console.log(key + " -> " + objArray[key]);
}
}
相同的输出
我已经尝试过在另一篇文章中看到的其他迭代器:
我要迭代什么,得到81,aaa; 83,BBB
提前致谢
答案 0 :(得分:1)
首先,您需要从JSON.parse
返回值,然后您必须迭代bit
objArray
数组,因为现在您只需查看关键字顶级。
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]);
}
}
}
答案 1 :(得分:0)
如果objArray
是一个字符串,JSON.parse
会将json解析为字符串:
var output = Object.values(JSON.parse(objArray)["bit"]).map(elt => {
return elt.id + '->' + elt.value;
}).join(';');
console.log(output);
答案 2 :(得分:0)
每次我尝试迭代我得到未定义或我从json得到每个字符,这不是我假装
原因:您正尝试解析 JSON String
而不是 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 Object
转换为JSON.parse()
,然后解析它。
<强>样本强>
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]);
}
}
答案 3 :(得分:-1)
JSON.parse()
将json字符串作为参数并返回JSON对象。
如果json字符串正确,这应该有效。
var key = JSON.parse(objArray);
for (key in objArray) {
if (objArray.hasOwnProperty(key)) {
console.log(key + " -> " + objArray[key]);
}
}