javascript - JSON 文件错误

标签 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"
      }
    ]
}

我收到错误:解析错误

最佳答案

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

{
space
LF

错误 JSON 字符串的示例:

{ 
 "a":3
}

如果删除空格,它就会起作用。

所以你知道如何解决它。

附加说明:

  • 使用默认设置在 jslint.com 中的 Chrome 和 Firefox 上均失败
  • 如果您选中“困惑的空白”,jslint.com 就会接受 JSON
  • 其他在线解析器可能不太严格
  • Crockford 的 JavaScript 实现 JSON.parse 不会失败。 (您可以测试它 here )也不能使用 native JSON.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/

相关文章:

jquery - 在 jQuery 中解析 JSON Google Finance

php - 使用 PHP 正则表达式从 html 中提取 JSON 对象

android - 如何从 JSON 文件中解析?

javascript - 正则表达式在 IE 中返回值,在 Firefox 和 Safari/Chrome 中返回 'undefined'

当今世界的 JavaScript

javascript - 无卡顿体验和 websocket

javascript - 如何迭代特定索引并检查 javascript/angular 中的值

javascript - 如何使用构造函数创建对象数组?

java - Jquery函数将java数据转换为json

java - 忽略错误 org.jsoup.HttpStatusException... 并打印自定义消息?