0


0

JSONをJQueryでロードした後、多くのエントリではなく1つのエントリを取得します

JSONを作成しました

{
    "News": {
         "Article": {"title": "test"},
         "Article": { "title": "test" },
         /*Snipped*/
         "Article": { "title": "test" },
         "Article": { "title": "test" }
    },
    "count": "20"
}

JSON formatterで検証します。 しかし、jQueryを介してこのデータを取り込もうとすると、期待したものが得られません。

$.getJSON('php/json.php', function(data) {
  console.log(data);
});

結果:

News: Object
Article: Object
title: "test"
__proto__: Object
__proto__: Object
count: "20"

しかし、他の19個のArticleオブジェクトはどこにありますか? 私はJSONとjQueryの `getJSON`が初めてです。 足りないものはありますか。

3 Answer


8


JavaScriptオブジェクトは辞書です。つまり、名前は一意でなければなりません。 「Article」を複製しているので、各インスタンスは前のインスタンスを上書きします(または無視されます。パーサーがどのパスをたどるかはわかりません)。

修正するには、この名前を配列を参照するように定義する必要があります。

{ "News": { "Article": [
                { "title": "test" },
                { "title": "test" },
                ...],
             "count": "20" }

しかし、「count」が不要になるため、すべてのニュース項目が記事であると仮定すると、おそらくこれをさらに減らすことができます。

{ "News": [
          { "title": "test" },
          { "title": "test" },
          ...] }


1


より良い形式は

{
    "News": {
         "1": {"title": "test","type":"article"},
         "2": {"title": "test","type":"article"},
         /*Snipped*/
         "19": {"title": "test","type":"article"},
         "20": {"title": "test","type":"article"}
    },
    "count": "20"
}

したがって、それぞれで行うことができます。

$.each(Object.news,function(id,ObjectItem){
    if(ObjectItem.type == 'article')
    {
        //do something with ObjectItem.title
    }
})


0


Article-キーを複数回定義しました。 これは構文エラーではなく(これがフォーマッタがエラーを出さない理由です)、むしろ論理的なエラーです。 代わりに配列を使用する必要があります。