JSON文件中的错误

时间:2013-05-24 08:01:45

标签: javascript json parsing

当我使用下面的代码时:

{
   "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"
      }
    ]
}

我收到错误:解析错误

2 个答案:

答案 0 :(得分:1)

检查jsonlint.com。您的JSON非常完美......您的编辑器可能存在一些问题

答案 1 :(得分:1)

我可以通过从头开始编写JSON字符串并在jslint.com中测试它来重现这个问题,这个问题与这个错误的序列有关:

{
space
LF

一个糟糕的JSON字符串的例子:

{ 
 "a":3
}

如果删除空格,则可以正常工作。

所以你知道如何解决它。

附加说明:

  • 在jslint.com中使用默认设置
  • 在Chrome和Firefox上都失败了
  • jslint.com如果您查看“凌乱的空白区域”
  • ,则接受JSON
  • 其他在线解析器可能不那么严格
  • 使用Crockford的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
        )

你拥有的空白是无用的,即使是格式化,但它是合法的。你最好删除它,但你也应该调整你的解析器,使其更加宽容,就像规则一样。