QA@IT

ネストされているJSONデータの取得

32888 PV

入れ子になっているJSONデータの取得

APIを利用して返ってきた以下のJSONデータvenueの中のnameを取り出したい場合どうしたらよいのでしょうか。
item.venue.nameだと取得できませんでした。

JSONデータ()
{
  "results": [
  {
  "name": "April 2015 NY Tech Meetup",
  "visibility": "public",
  "venue": {
           "name": "Joynture Work Habitat",
           "state": "NY",
           "country": "us"
           },
  }
  ]
}
html
<ul id="upcoming"></ul>
//JSON取得
$.getJSON("データ",function(data){
    var eventList=jsonParse(data);
    $(’#upcoming).html(eventList);
});

//パース関数
function jsonParse(data){
    var eventList="";
    var data=data.results;
    $.each(data,function(i,item){
        eventList+=<li class="eventlist">+item.venue.name(取得できず)+</li>’;
        });
    return eventList;
}

ちなみにresults直下のnameは表示できます。
ループをもう一回回したり色々やってみましたができませんでした
よろしくお願いします。

回答

JSON 文字列に ',' が一つ多いと思いますが(最後の '}' から数えて 4 文字目)、それが問題かもしれません。

自分でも検証してみました。

以下の JSON 文字列(余分な ',' を削除しただけ)を返す ASP.NET Web API の Get メソッドを作って、

{"results":[{"name":"April 2015 NY Tech Meetup","visibility":"public","venue":{"name":"Joynture Work Habitat","state":"NY","country":"us"}}]}

それを、以下の jQuery.ajax を使ったクライアントスクリプトで取得して処理し、

function apiHeroesGet() {
    $.ajax({
        type: "GET",
        url: "api/heroes",
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            if (data.hasOwnProperty('results')) {
                data = data.results;
            }

            $('#heroes').empty();
            $.each(data, function (key, val) {
                var str = val.name + ', ' + val.visibility + ', ' + 
                    val.venue.name + ', ' + val.venue.state + ', ' + val.venue.country;
                $('<li/>', { html: str }).appendTo($('#heroes'));
            });
        },
        error: function (jqXHR, textStatus, errorThrown) {
            $('#heroes').empty();
            $('#heroes').text('textStatus: ' + textStatus + ', errorThrown: ' + errorThrown);
        }
    });
}

id="heroes" というhtml の ul 要素に書き出した結果、以下の通り、すべて取得できました。

•April 2015 NY Tech Meetup, public, Joynture Work Habitat, NY, us

編集 履歴 (0)

SurferOnWwwさん
回答ありがとうございます
本来帰ってくるデータが大量だったので省略して載せたのですが私のタイピングミスでした。ごめんなさい。','はいらないです。
でも今SurferOnWwwさんのコードをコピーしてやってみたところ無事表示されました。
私のコードの問題だったようです。。理由はわからないのですが解決してよかったです!
本当にありがとうございました!

編集 履歴 (1)
ウォッチ

この質問への回答やコメントをメールでお知らせします。