JSON.parse意外的字符错误

时间:2011-12-15 18:34:48

标签: javascript json

我收到此错误:

  

JSON.parse:意外字符

当我在firebug中运行此语句时:

JSON.parse({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false});

为什么会这样? JSON字符串对我来说似乎是正确的,我也使用JSHint测试它。上述情况中的传递对象是内容类型设置为application/json

的服务器响应

3 个答案:

答案 0 :(得分:218)

你没有解析字符串,你正在解析一个已经解析过的对象:)

var obj1 = JSON.parse('{"creditBalance":0,...,"starStatus":false}');
//                    ^                                          ^
//                    if you want to parse, the input should be a string 

var obj2 = {"creditBalance":0,...,"starStatus":false};
// or just use it directly.

答案 1 :(得分:34)

只需使用JSON.stringify(),就可以确保有问题的对象在传递给解析函数之前已经过字符串化。

更新了以下行,

JSON.parse(JSON.stringify({"balance":0,"count":0,"time":1323973673061,"firstname":"howard","userId":5383,"localid":1,"freeExpiration":0,"status":false}));

或者如果您将JSON存储在某个变量中:

JSON.parse(JSON.stringify(yourJSONobject));

答案 2 :(得分:-1)

对于OP不是正确的,但是此错误可能是由于对字符串使用单引号(')而不是双引号(")引起的。

JSON spec的字符串需要双引号。

例如:

JSON.parse(`{"myparam": 'myString'}`)

给出了错误,而

JSON.parse(`{"myparam": "myString"}`)

没有。请注意myString周围的引号。

相关:https://stackoverflow.com/a/14355724/1461850