带有意外标记的JSON.parse字符串

时间:2016-02-01 21:56:14

标签: javascript json node.js parsing

解析此字符串我收到意外的令牌错误,意外的令牌是什么?

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

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

2 个答案:

答案 0 :(得分:0)

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

因此数字079455无效JSON。

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

如果你不能,你可以使用以下笨拙的Javascript删除无关的零:

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

答案 1 :(得分:0)

除了错误的数字格式之外,您还没有正确包装String。如果要在字符串中包含"个字符,则应使用'包装它:

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