2

当我使用以下代码时:

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

我收到错误:解析错误

4

2 回答 2

1

检查jsonlint.com。你的 JSON 很完美……你的编辑器可能有问题

于 2013-05-24T08:08:42.933 回答
1

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

{
space
LF

错误 JSON 字符串的示例:

{ 
 "a":3
}

如果删除空间,它可以工作。

所以你知道如何解决它。

附加说明:

  • 它在 jslint.com 的 Chrome 和 Firefox 上都失败,默认设置
  • 如果您检查“混乱的空白”,jslint.com 会接受 JSON
  • 其他在线解析器可能不那么严格
  • 它不会因 Crockford 的 JavaScript 实现JSON.parse(您可以在此处测试)或JSON.parse浏览器的本机而失败

如果您阅读规范,您的 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
        )

您拥有的空格是无用的,即使对于格式化也是如此,但它是合法的。您最好将其删除,但您可能还应该按照规则调整解析器以使其更加宽容。

于 2013-05-24T08:17:46.160 回答