jquery - 解析嵌套的 json 对象

标签 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
}

当我写的时候:

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].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
}

现在您可以执行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];
   ...
}

关于jquery - 解析嵌套的 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11266376/

相关文章:

javascript - 使用 Javascript/jQuery 更改保存网页

javascript - 检查json请求的响应内容?

java - 如何在 android-query 中中止 ajax 查询?

ios - 如何解析和访问 HTTPresponse 中的特定数据

c# - 在 .NET 中使用部分 JSON 更新反序列化对象

javascript - 如何将对象属性作为参数传递?

javascript - 如何在 Knockout.js 模板中使用 jQuery?

javascript - 超过 4 段放置下一页选项(如谷歌搜索结果)

javascript - 404 未找到 JSON 文件 Liferay

c# - 如何使用 Knockout.js 通过 ("map"创建 "observables") 复杂类型?