正しい形式でないJSON

私の JSON間違った

{
    "id":1,
    "album":"127 Hours",
    "songs":
        [{
            "id":1,
            "name":"Never Hear Surf Music Again",
            "duration":"5:52"
        }],
    "id":2,
    "album":"Adele 21",
    "songs":
        [{
            "id":1,
            "name":"Rolling In The Deep",
            "duration":"03:48"
        }]
}

私のアプリで JSON を使用する前に、ここで確認しています:

http://json.parser.online.fr/

but getting JSON Eval for id: 2 only, not for both id: 1 & 2

0
JSONをインデントすることをお勧めします。それを読んで問題を見つけやすくなります。例えば。 ( {または [)を問わず)余分な4つのスペースをインデントします。 (そして私が書いたように、2人の異なるユーザーがあなたの投稿を編集してJSONを字下げします!)
追加された 著者 user9876,

9 答え

"id" プロパティの2倍、 "album" の2倍、 "songs"プロパティの2倍の値をオブジェクトに2回以上持たせることはできません。

たとえそれが有効な(解析可能な)JSON文字列であっても、それはあなたが保存したいものを格納しませんし、より正確にはそれらのプロパティ値を持つオブジェクトには復元できません。

オブジェクトの配列にする必要があります:

[
    {

        "id":1,
        "album":"127 Hours",
        "songs":[
          {
          "id":1,
          "name":"Never Hear Surf Music Again",
          "duration":"5:52"
          }
        ]
    }, {
        "id":2,
        "album":"Adele 21",
        "songs":[
          {
          "id":1,
          "name":"Rolling In The Deep",
          "duration":"03:48"
          }
        ]
    }
 ]
4
追加された
@AbrahimNeil私はそう思った。あなたは何が欠けていますか?
追加された 著者 Denys Séguret,

"id" プロパティの2倍、 "album" の2倍、 "songs"プロパティの2倍の値をオブジェクトに2回以上持たせることはできません。

たとえそれが有効な(解析可能な)JSON文字列であっても、それはあなたが保存したいものを格納しませんし、より正確にはそれらのプロパティ値を持つオブジェクトには復元できません。

オブジェクトの配列にする必要があります:

[
    {

        "id":1,
        "album":"127 Hours",
        "songs":[
          {
          "id":1,
          "name":"Never Hear Surf Music Again",
          "duration":"5:52"
          }
        ]
    }, {
        "id":2,
        "album":"Adele 21",
        "songs":[
          {
          "id":1,
          "name":"Rolling In The Deep",
          "duration":"03:48"
          }
        ]
    }
 ]
4
追加された
@AbrahimNeil私はそう思った。あなたは何が欠けていますか?
追加された 著者 Denys Séguret,

idalbumsongs の2つのマッピングを持つ単一の最上位オブジェクトがあります。これは無効です。オブジェクトのキーは一意でなければなりません。

おそらく、最上位レベルにはオブジェクトのリスト

[
    {
        "id":1,
        "album":"127 Hours",
        "songs": [
            {
                "id":1,
                "name":"Never Hear Surf Music Again",
                "duration":"5:52"
            }
        ]
    },
    {
        "id":2,
        .....

表現をわずかに変更し、アルバムIDでキー入力されたトップレベルオブジェクトを使用します

{
   "album_1":{
        "title":"127 Hours",
        "songs": [
            {
                "id":1,
                "name":"Never Hear Surf Music Again",
                "duration":"5:52"
            }
        ]
    },
    "album_2":{
        "title":"Adele 21",
         ....

どの表現がより適切かは、ユースケースによって異なります。オブジェクトのリスト表示では、予測可能な順序でアルバムのリストを繰り返し処理できますが、特定のIDを持つアルバムを見つけるには、(線形またはバイナリ)検索を行う必要があります。最上位レベルのオブジェクト表現では、1つのアルバムIDの詳細をより簡単に見つけることができますが、繰り返し処理するときに同じ順序で取得することはできません。

2
追加された

idalbumsongs の2つのマッピングを持つ単一の最上位オブジェクトがあります。これは無効です。オブジェクトのキーは一意でなければなりません。

おそらく、最上位レベルにはオブジェクトのリスト

[
    {
        "id":1,
        "album":"127 Hours",
        "songs": [
            {
                "id":1,
                "name":"Never Hear Surf Music Again",
                "duration":"5:52"
            }
        ]
    },
    {
        "id":2,
        .....

表現をわずかに変更し、アルバムIDでキー入力されたトップレベルオブジェクトを使用します

{
   "album_1":{
        "title":"127 Hours",
        "songs": [
            {
                "id":1,
                "name":"Never Hear Surf Music Again",
                "duration":"5:52"
            }
        ]
    },
    "album_2":{
        "title":"Adele 21",
         ....

どの表現がより適切かは、ユースケースによって異なります。オブジェクトのリスト表示では、予測可能な順序でアルバムのリストを繰り返し処理できますが、特定のIDを持つアルバムを見つけるには、(線形またはバイナリ)検索を行う必要があります。最上位レベルのオブジェクト表現では、1つのアルバムIDの詳細をより簡単に見つけることができますが、繰り返し処理するときに同じ順序で取得することはできません。

2
追加された
{
    "Album list": [
        {
                "id":1,
             "album":"127 Hours",
             "songs":{
    "id":1,
    "name":"Never Hear Surf Music Again",
    "duration":"5:52"
    }
        },
        {
               "id":2,
    "album":"Adele 21",
    "songs":

    {
    "id":1,
    "name":"Rolling In The Deep",
    "duration":"03:48"
    }
        }



    ]
}
2
追加された

JSONの適切な字下げで質問を編集しました。 idalbumsongs などの重複したプロパティがあることを簡単に確認できます。有効なJSONでは、プロパティ名を繰り返し指定することはできません。そのため、エラーが発生します。

たぶん、あなたはすべてのものではなくオブジェクトの配列を持っていたいと思うでしょう。私は、次のJSONがあなたのニーズを満たすだろうと思う:

[{
    "id":1,
    "album":"127 Hours",
    "songs":
        [{
            "id":1,
            "name":"Never Hear Surf Music Again",
            "duration":"5:52"
        }]
},
{
    "id":2,
    "album":"Adele 21",
    "songs":
        [{
            "id":1,
            "name":"Rolling In The Deep",
            "duration":"03:48"
        }]
}]
1
追加された

JSONの適切な字下げで質問を編集しました。 idalbumsongs などの重複したプロパティがあることを簡単に確認できます。有効なJSONでは、プロパティ名を繰り返し指定することはできません。そのため、エラーが発生します。

たぶん、あなたはすべてのものではなくオブジェクトの配列を持っていたいと思うでしょう。私は、次のJSONがあなたのニーズを満たすだろうと思う:

[{
    "id":1,
    "album":"127 Hours",
    "songs":
        [{
            "id":1,
            "name":"Never Hear Surf Music Again",
            "duration":"5:52"
        }]
},
{
    "id":2,
    "album":"Adele 21",
    "songs":
        [{
            "id":1,
            "name":"Rolling In The Deep",
            "duration":"03:48"
        }]
}]
1
追加された

私はこれがあなたのJSONがどうあるべきかと信じています

[{
    "id": 1,
    "album": "127 Hours",
    "songs": [{
        "id": 1,
        "name": "Never Hear Surf Music Again",
        "duration": "5:52"
    }]
}, {
    "id": 2,
    "album": "Adele 21",
    "songs": [{
        "id": 1,
        "name": "Rolling In The Deep",
        "duration": "03:48"
    }]
}]
1
追加された

私はこれがあなたのJSONがどうあるべきかと信じています

[{
    "id": 1,
    "album": "127 Hours",
    "songs": [{
        "id": 1,
        "name": "Never Hear Surf Music Again",
        "duration": "5:52"
    }]
}, {
    "id": 2,
    "album": "Adele 21",
    "songs": [{
        "id": 1,
        "name": "Rolling In The Deep",
        "duration": "03:48"
    }]
}]
1
追加された
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript