JSON.parse SyntaxError在同一键上具有多个值

时间:2018-08-07 23:45:04

标签: json parsing

这是我的示例JSON数据:

var testData =
{
"Level1": [
    {
        "Level2": [
            {
                "Level3": [
                    {
                        "body": "AAAAA"
                    },
                    {
                        "body": "BBBBB"
                    }
                ]
            }
        ]
      }
    ]
};

当我像这样使用JSON.stringify时:

var x = JSON.stringify(testData).replace(/[\[\]]/g,"");
console.log(x);

它按预期工作,并正确替换了方括号并返回以下结果:

{"Level1":{"Level2":{"Level3":{"body":"AAAAA"},{"body":"BBBBB"}}}}

当我尝试添加JSON.parse并返回错误时,会发生错误:

var x = JSON.parse(JSON.stringify(testData).replace(/[\[\]]/g,""));

特定错误为SyntaxError: Unexpected token { in JSON。似乎正在发生的事情是,JSON.parse将键/值列表内的逗号(而不是结尾)视为JSON字符串的结尾。

JSON.parse error

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

{"Level1":{"Level2":{"Level3":{"body":"AAAAA"},{"body":"BBBBB"}}}}

这不是有效的JSON

3级应该是:

"Level3":[{"body":"AAAAA"}, {"body":"BBBBB"}]

对于您的第一级来说,您的数组只有1个元素,因此可以删除数组括号[]而不会产生任何后果。级别3是包含2个元素的实际数组,因此删除[]会破坏您的有效JSON语法。