0

そこで、Yahoo の API を使用して座標を郵便番号に変換しています。返される JSON は次のとおりです。

{
"ResultSet": {
    "version": "1.0",
    "Error": 0,
    "ErrorMessage": "No error",
    "Locale": "us_US",
    "Quality": 99,
    "Found": 1,
    "Results": [{
         ....
     }]

私がやっていることは次のとおりです。

$.getJSON("http://where.yahooapis.com/geocode?q=" + lat + ",+" + lon + "&gflags=R&flags=J", function(data){
            console.log(data.ResultSet.Results.postal);
        });

上にリストしたことは明らかに機能しません。私の質問は、結果配列内のデータにアクセスするにはどうすればよいですか?

ありがとう

4

3 に答える 3

3

結果は配列であるため、コンソールログ行を次のように変更すると機能しますか?

console.log(data.ResultSet.Results[0].postal)

その場合、配列をループして各要素を取得します。JSON を取得するコードは私には問題ないように見えます。配列要素のビットを見逃しただけだと思います :)

于 2012-04-29T20:04:00.973 に答える
0

行は呼び出されたオブジェクトで呼び出されconsole.log(data.ResultSet.Results.postal);たプロパティにアクセスしようとしていますが、Results はオブジェクトの配列であるため、プロパティは存在しません。portaldata.ResultSet.Results

おそらく行う必要があるのは、配列を次のように反復処理することです...

$.getJSON("http://where.yahooapis.com/geocode?q=" + lat + ",+" + lon + "&gflags=R&flags=J", function(data){
    for (var i=0; i< data.ResultSet.Results.length; i++) {
        console.log("data.ResultSet.Results[i].postal = " + data.ResultSet.Results[i].postal);
});
于 2012-04-29T20:12:54.970 に答える
0

これはうまくいくはずです。

$.getJSON("http://where.yahooapis.com/geocode?q=234532,234533&gflags=R&flags=J", function(data){
   $.each(data.ResultSet.Results,function(i,item){
      console.log(data.ResultSet.Results[i].postal);
   });     
});

例: http: //jsfiddle.net/ALsHH/11/

于 2012-04-29T20:10:33.440 に答える