0

現在、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"]}}

以下のコードを使用してファイルを読み取りますが、何らかの理由で常に 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);
        }
    }
});

私のコードに間違いがあるかどうか、または値を読み取るためのより良い方法があるかどうかを誰かが確認できますか?

4

5 に答える 5

7

locatie[k]kのオブジェクトのプロパティにアクセスしようとしますlocatieが、あなたの場合、番号は名前自体の一部です。プロパティ名を動的に構築する必要があります。さらに、ネストされたオブジェクトの各プロパティは 1 つの要素を持つ配列であるため、最初の要素にアクセスする必要があります。

var _locaties = data['locatie' + k]['naam' + k][0];

ただし、データ構造は少し奇妙です。プロパティ名に数字が含まれていると、データへのアクセスが難しくなります。変更できる場合は、オブジェクトの配列に変更し、プロパティが必要ない場合は配列を使用しないでください。

[{"naam": "Domplein", "value": "value1"}, {"naam": "Neude", "value":"value1"}]

次に、データへのアクセスは簡単です。

for (var i = 0, l = data.length; i < l; i++) {
    var _locaties = data[i].naam;
}
于 2013-03-18T10:23:57.490 に答える
2

JSONは、配列のような順序を保証するものではありません。

ただし、あなたの場合、JSONのキーにはインデックスのヒントがあるため、次のコマンドで「naam」にアクセスしてみてください。

 data["locatie" + k]["naam" + k]
于 2013-03-18T10:28:29.557 に答える
2

これを試して:

$.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][0]; 
            alert(_locaties);
        }
    }
});

プロパティの値naamは配列であるため、文字列値を取得するには、最初の項目をフェッチする必要があります。

于 2013-03-18T10:24:56.100 に答える
2

locatieとは配列ではないため、このnaamようにアクセスすることはできません。

番号と名前を文字列として結合する必要があります。そんな感じ

data['locatie'+k]
于 2013-03-18T10:23:57.743 に答える
1

これを試して ;

k = 0;
console.log( 
    data[ 'locatie'+ k]['naam'+ k][0], 
    data[ 'locatie'+ k]['value'+ k ][0]
);

k = 1;
console.log( 
    data[ 'locatie'+ k]['naam'+ k][0], 
    data[ 'locatie'+ k]['value'+ k ][0]
);
于 2013-03-18T10:27:24.007 に答える