2

そのため、getJSON を使用して多次元 JSON 配列をフェッチし、配列内の値にアクセスしたいのですが、配列内の最初の要素より長く到達できません。

"producers",
[
    {
        "producer":{
            "id":"1",
            "name":"Em\u00e5mejeriet",
            "address":" Grenv\u00e4gen 1-3",
            "zipcode":" 577 39",
            "district":" Hultsfred",
            "webpage":"http:\/\/www.emamejeriet.se",
            "logoURL":"..\/producenter\/images\/ema.png",
            "latitude":"57.4999",
            "longitude":"15.828"
        }
    },
    {
        "producer":{
            "id":"2",

...等々。

私のコード:

$.getJSON("/url/producers.json", function(data) {
    $.each(data, function() {
        $.each(this, function(key, value) {
            console.log(value.producer);
        });
    });
});

出力はオブジェクトです。ブラウザーのコンソールからコピーされたオブジェクトを貼り付けるより良い方法はわかりません:"> Object {id: "1", name: "Emåmejeriet", address: "Grenvägen 1-3, zipcode: "577 39", disctrict: "Hulsfred"...}

このフォーラムから、私が言ったように、さまざまなアプローチを検索してテストしましたが、頭を悩ませることができませんでした。

4

3 に答える 3

4

Firebug のコンソールを開き、以下を貼り付けて実行します。

var json = '{' + 
'"peopleList":[' +
'{"id":1,"name":"marcelo","address":"rua meh","phone":"85 99999999"},'+
'{"id":2,"name":"marcelo2","address":"rua meh2","phone":"85 9999.9999"}]}';

var parsed = JSON.parse(json);

ここで、JSON の第 2 レベルの下に 2 つのオブジェクトがあるため、オブジェクトを指定する必要があります。その後、そのプロパティを選択できることがわかります。

parsed.peopleList[0].name

動的に生成された JSON を操作する前に、テスト目的で (もちろん同じ構造の) ダミー データを取得し、最終的なコードを実装する前にそれを試してください。

于 2012-12-19T20:07:33.467 に答える
3

の出力がvalue.producerオブジェクトの場合、そのオブジェクトのプロパティにアクセスできるはずです。たとえば、value.producer.name「asdfsadf」を出力する必要があります。

アップデート

json データが有効ではないようです。(「プロデューサー」はデータ オブジェクトのプロパティであり、そのプロパティの値はすべての「プロデューサー」オブジェクトの配列であると想定しています。)

このフィドル ( http://jsfiddle.net/kAsPm/ ) を作成しましたが、期待どおりに動作します。「プロデューサー」の後にカンマをコロンに変更する必要がありました。

"producers":  // changed from "producers",
[
    {
        "producer":{
            "id":"1",
            ...
于 2012-12-19T19:59:18.290 に答える
1

tempo.js レンダリング エンジンを使用しました。多次元配列レンダリングを行います。ここにリンクがあります http://tempojs.com/

tempo.cs をダウンロードし、リンクに従ってください。

于 2012-12-19T21:53:21.833 に答える