【问题标题】:JSON.parse string with unexpected token带有意外标记的 JSON.parse 字符串
【发布时间】:2016-05-10 12:43:52
【问题描述】:

解析这个字符串我得到一个意外的令牌错误,什么是意外的令牌?

JSON.parse("​[{"attr1":079455,"Attr2": 3},{"Attr1":847987​​,"Attr2": 3}]​​​");

我一直在查看文档中的here,但我只是没有看到这个字符串有什么问题?我已经尝试过各种字符串化和用单引号替换双引号。

【问题讨论】:

  • 079455 --- 根据 JSON 标准,这不是一个有效的数字。你是从哪里弄来的?
  • 这只是我从后端获取的一些数据的样本,我认为某些格式不正确
  • 好吧,如果你使用一些库来生成 JSON - 它有一个错误。如果你手动生成它,那么你不应该这样做,而是使用一些适当的实现。

标签: javascript json node.js parsing


【解决方案1】:

JSON 格式不允许数字前导零,0 的特殊情况或以 0. 开头的浮点数除外。请参阅http://www.json.org/ 中显示数字格式的图表。

所以数字 079455 不是有效的 JSON。

您应该首先修复生成 JSON 的程序。它应该使用库函数来生成 JSON,而不是手动格式化。

如果不能,您可以使用以下笨拙的 Javascript 来删除多余的零:

json_str = json_str.replace(/":0+/, '":');

【讨论】:

    【解决方案2】:

    除了数字格式不正确外,您还没有正确包装您的字符串。如果你想在你的字符串中包含" 字符,你应该用' 包装它:

    JSON.parse('[{"attr1":79455,"Attr2": 3},{"Attr1":847987,"Attr2": 3}]');

    【讨论】:

      猜你喜欢
      • 2017-12-31
      • 2013-01-04
      • 2016-03-02
      • 2014-12-04
      • 1970-01-01
      • 2012-03-30
      • 2014-09-08
      相关资源
      最近更新 更多