我有一个 json 文件,我正在尝试从中获取值。在此文件中,一个对象嵌套在另一个对象内。我可以隔离顶级值,但不能隔离嵌套值。一定是语法问题。这是我正在使用的。
这是 json:
{
"total": [
[
{
"votes": "79,060"
},
{
"percent": "11%"
},
{
"winner": "0"
}
],
[
{
"votes": "167,800"
},
{
"percent": "22%"
},
{
"winner": "0"
}
],
[
{
"votes": "51,519"
},
{
"percent": "7%"
},
{
"winner": "0"
}
],
[
{
"votes": "297,060"
},
{
"percent": "39%"
},
{
"winner": "1"
}
],
[
{
"votes": "156,787"
},
{
"percent": "21%"
},
{
"winner": "0"
}
]
],
"useWinnerColors": 1,
"timestamp": "3:00 p.m. April 26",
"candidateCount": 5
}
当我写的时候:
console.log(json.candidateCount);
我得到了正确答案 (5)。
但是当我写的时候:
console.log(json.total[0][1]);
我得到对象{percent="11%"}。
当我写下:
console.log(json.total[0].votes);
我未定义。
请问如何隔离“总计”中项目的值(value)?
最佳答案
你会得到undefined
,因为json.total[0]
本身就是一个数组。您需要隔离内部 json.total[0]
的特定数组。因此,您需要执行类似 json.total[0][0].votes
或 json.total[0][1].votes
的操作。
我认为 JSON 的更好结构应该是这样的:
{"total": [
{
"votes": "79,060"
"percent": "11%"
"winner": "0",
},
...
{
"votes": "156,787",
"percent": "21%",
"winner": "0"
}],
"useWinnerColors": 1,
"timestamp": "3:00 p.m. April 26",
"candidateCount": 5
}
现在您可以执行json.total[0].votes
。
您不需要创建一个数组,其中每个条目都是名称/值对。您可以直接使用关联数组。
编辑:要迭代关联数组,请使用 for..in
和 hasOwnProperty()
。 hasOwnProperty()
检查将阻止您迭代它继承的属性(某些第三方库会污染命名空间):
var map = json.total[0];
for(var prop in map) if(map.hasOwnProperty(prop)) {
var value = map[prop];
...
}
关于jquery - 解析嵌套的 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11266376/