解析嵌套的json对象

Lau*_*NMS 2 jquery json

我有一个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
}
Run Code Online (Sandbox Code Playgroud)

我写的时候:

console.log(json.candidateCount);
Run Code Online (Sandbox Code Playgroud)

我得到了正确的答案(5).

但是当我写道:

console.log(json.total[0][1]);
Run Code Online (Sandbox Code Playgroud)

我得到了对象{percent ="11%"}.

当我写:

console.log(json.total[0].votes);
Run Code Online (Sandbox Code Playgroud)

我得到了不确定.

如何隔离"总计"中的项目值?

Viv*_*ath 5

你得到的undefined是因为json.total[0]它本身就是一个阵列.您需要隔离内部 的特定阵列json.total[0].所以,你需要做的是这样json.total[0][0].votesjson.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
}
Run Code Online (Sandbox Code Playgroud)

现在你可以做到json.total[0].votes.

您不需要创建一个数组,其中每个条目都是一个名称 - 值对.您可以直接使用关联数组.

编辑:要遍历关联数组,使用for..inhasOwnProperty().该hasOwnProperty()检查将阻止您遍历,它继承了(一些第三方库污染命名空间)属性:

var map = json.total[0];
for(var prop in map) if(map.hasOwnProperty(prop)) {
   var value = map[prop];
   ...
}
Run Code Online (Sandbox Code Playgroud)