JSON不是正确的格式

时间:2013-06-25 10:32:22

标签: 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/

但仅为id:2获取 JSON Eval ,而不是 id:1& 2

5 个答案:

答案 0 :(得分:4)

您不能在对象中多次拥有某个属性,并且您拥有"id"属性的两倍,"album""songs"两次。

即使它是一个有效的(可解析的)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 :(得分:2)

您有一个顶级对象,每个键idalbumsongs都有两个映射。这是无效的 - 对象的键应该是唯一的。

您可能需要顶级作为对象列表

[
    {
        "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的相册。顶级对象表示可让您更轻松地查找单个相册ID的详细信息,但在迭代时您不再保证以相同的顺序获取它们。

答案 2 :(得分: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"
    }
        }



    ]
}

答案 3 :(得分: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"
    }]
}]

答案 4 :(得分: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"
        }]
}]