这是我的示例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字符串的结尾。
有人知道为什么会这样吗?
答案 0 :(得分:0)
{"Level1":{"Level2":{"Level3":{"body":"AAAAA"},{"body":"BBBBB"}}}}
这不是有效的JSON
3级应该是:
"Level3":[{"body":"AAAAA"}, {"body":"BBBBB"}]
对于您的第一级来说,您的数组只有1个元素,因此可以删除数组括号[]
而不会产生任何后果。级别3是包含2个元素的实际数组,因此删除[]
会破坏您的有效JSON语法。