当我使用下面的代码时:
{
"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"
}
]
}
我收到错误:解析错误
最佳答案
我可以通过从头开始编写 JSON 字符串并在 jslint.com 中测试它来重现该问题。 ,与这个错误序列有关:
{
space
LF
错误 JSON 字符串的示例:
{
"a":3
}
如果删除空格,它就会起作用。
所以你知道如何解决它。
附加说明:
- 使用默认设置在 jslint.com 中的 Chrome 和 Firefox 上均失败
- 如果您选中“困惑的空白”,jslint.com 就会接受 JSON
- 其他在线解析器可能不太严格
- Crockford 的 JavaScript 实现
JSON.parse
不会失败。 (您可以测试它 here )也不能使用 nativeJSON.parse
您的浏览器
如果您阅读the norm ,看来您的 JSON 实际上是有效的:
These are the six structural characters:
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
Insignificant whitespace is allowed before or after any of the six structural characters.
ws = *( %x20 / ; Space %x09 / ; Horizontal tab %x0A / ; Line feed or New line %x0D ; Carriage return )
即使对于格式化,您所拥有的空格也是无用的,但它是合法的。您最好将其删除,但您可能还应该调整您的解析器以使其更加宽容,这是规则。
关于javascript - JSON 文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16730295/