从JSON对象读取值

Par*_*ter 0 javascript json loops object

我目前正在尝试从JSON对象获取内容.我一直在寻找谷歌和我认为应该工作的东西,出于某种原因,没有.

JSON看起来像这样:

{"locatie0":{"naam0":["Domplein"],"value0":["value1"]},"locatie1":{"naam1":["Neude"],"value1":["value1"]},"locatie2":{"naam2":["Vredenburg"],"value2":["value1"]},"locatie3":{"naam3":["Stadhuisbrug"],"value3":["value1"]},"locatie4":{"naam4":["Korte Minrebroederstraat"],"value4":["value1"]}}
Run Code Online (Sandbox Code Playgroud)

我使用下面的代码来读取文件,但由于某种原因,它将始终返回undefined或NaN.

$.ajax({
    url: "_data/pleinen.json",
    type: 'get', 
    dataType: "json", 
    success: function(data) {
        for(var k = 0; k < _loc.length; k += 1) {
            var _locaties = data.locatie[k].naam[k];
            // Should alert "Domplein", "Neude", "Vredenburg", "Stadhuisbrug", "Korte Minrebroekstraat", 
            alert(_locaties);
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

任何人都可以看到我的代码是否犯了错误,或者是否有更好的方法来阅读这些值?

Fel*_*ing 7

locatie[k]尝试访问k对象的属性locatie,但在您的情况下,该数字是名称本身的一部分.您必须动态构建属性名称.此外,嵌套对象的每个属性都是一个包含一个元素的数组,因此您必须访问第一个元素:

var _locaties = data['locatie' + k]['naam' + k][0];
Run Code Online (Sandbox Code Playgroud)

但是你的数据结构有点奇怪.属性名称中的数字使得访问数据更加困难.如果可以更改它,请将其更改为对象数组,如果不需要,则不要使用数组作为属性:

[{"naam": "Domplein", "value": "value1"}, {"naam": "Neude", "value":"value1"}]
Run Code Online (Sandbox Code Playgroud)

然后访问数据就是:

for (var i = 0, l = data.length; i < l; i++) {
    var _locaties = data[i].naam;
}
Run Code Online (Sandbox Code Playgroud)