当我使用下面的代码时:
{
"info":[
{
"name": "Adam",
"address": "Park Street"
}
]
}
完美解析
但添加了更多代码,如:
{
"info":[
{
"name": "Adam",
"address": "Park Street1"
},
{ //<------ getting error here
"name": "Bob",
"address": "Park Street2"
},
{
"name": "Clarin",
"address": "Park Street3"
}
]
}
我收到错误:解析错误
答案 0 :(得分:1)
检查jsonlint.com。您的JSON非常完美......您的编辑器可能存在一些问题
答案 1 :(得分:1)
我可以通过从头开始编写JSON字符串并在jslint.com中测试它来重现这个问题,这个问题与这个错误的序列有关:
{
space
LF
一个糟糕的JSON字符串的例子:
{
"a":3
}
如果删除空格,则可以正常工作。
所以你知道如何解决它。
附加说明:
JSON.parse
(您可以测试here)和浏览器的原生JSON.parse
的JavaScript实现不会失败如果您阅读the norm,您的JSON 似乎,实际上是有效的:
这是六个结构特征:
begin-array = ws %x5B ws ; [ left square bracket begin-object = ws %x7B ws ; { left curly bracket end-array = ws %x5D ws ; ] right square bracket end-object = ws %x7D ws ; } right curly bracket name-separator = ws %x3A ws ; : colon value-separator = ws %x2C ws ; , comma
在六个中的任何一个之前或之后允许无关紧要的空白 结构特征。
ws = *( %x20 / ; Space %x09 / ; Horizontal tab %x0A / ; Line feed or New line %x0D ; Carriage return )
你拥有的空白是无用的,即使是格式化,但它是合法的。你最好删除它,但你也应该调整你的解析器,使其更加宽容,就像规则一样。