2

いくつかのコードをテストしており、データを含む json ファイルを作成しました。

問題は、アラートに「[オブジェクト オブジェクト]、[オブジェクト オブジェクト]」が表示されることです。データなし。

私は何を間違っていますか?

コードは次のとおりです。

<!DOCTYPE HTML>
<html>
<head>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

<script>

    $(document).ready(function() {
        $.getJSON("appData.json",function(results){alert(results);});
    });

</script>

</head>
<body>

</body>
</html>

ここに appData.json の内容があります

[{"foo":"bar"},{"foo2":"blablabla"}]

また、index.html ファイルと json ファイルは両方ともデスクトップにあり、そこから実行しています。

4

4 に答える 4

6

このようにしてみてください:

$.getJSON("appData.json", function(results) {
        $.each(results, function(index) {
            alert(results[index].foo);
        });
    });
于 2012-08-11T20:18:08.577 に答える
1

そこには問題はありません。これは、配列内に2つのオブジェクトがあることを通知します。それを取得している理由は、それがトップレベルであるため、タイプのみを取得するためです。JSONデータにアクセスする良い方法は、再帰を使用することです。

function ContainsKeyValue( obj, key, value ){
for( all in obj )
{
    if( obj[all] != null && obj[all][key] == value ){
        return true;
    }
    if( typeof obj[all] == "object" && obj[all]!= null ){
        var found = ContainsKeyValue( obj[all], key, value );
        if( found == true ) return true;
    }
}
return false;
}

これは、グラフ内の特定のオブジェクトから開始され、見つかったオブジェクトをすべて繰り返します。私はそれを次のように使用します:

var liveData = [];
for( var item in json.Items)
{
if( ContainsKeyValue( json.Items[item], "Key", "Value" ) === true )
{
    liveData.push( json.Items[item] );
}
}
于 2012-08-11T20:25:19.490 に答える
1

オブジェクトの配列を取得していて、配列とオブジェクトはデータです。

  //          v----first Object in the outer Array
alert(results[0].foo);
  //              ^----foo property of the first Object

オブジェクトalertのデフォルト値を表示するだけです。toString()

を使用する$.getJSONと、jQuery は JSON テキストを JavaScript オブジェクトに自動的に解析しました。生の JSON が必要な場合は、$.get代わりにリクエストを作成してください。


配列を反復する場合は、forループを使用するか、jQuery またはネイティブ API の反復メソッドのいずれかを使用します。

于 2012-08-11T20:16:12.257 に答える
1

オブジェクトにアラートを送信するときは、 とだけ表示され[Object]ます。Firefox を使用している場合はいつでも実行できますalert(results.toSource());が、代わりにコンソール (F12) を使用することをお勧めします。

$(document).ready(function() {
    $.getJSON("appData.json",function(results){
       console.log(results);
    });
});

オブジェクト全体とその構造を見ることができます。

于 2012-08-11T20:17:59.340 に答える