解析意外的字符错误

我得到了这个错误:

Parse: 意外字符

当我在 firebug 中运行这个语句时:

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

为什么会这样?JSON 字符串对我来说似乎是正确的,我还使用 JSHint 对它进行了测试。在上面的例子中,传递的对象是内容类型设置为 application/json的服务器响应

354357 次浏览

您不是在解析一个字符串,而是在解析一个已经解析过的对象:)

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.

只需使用 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));

Not true for the OP, but this error can be caused by using single quotation marks (') instead of double (") for strings.

JSON 规范要求字符串使用双引号。

例如:

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

给出了错误,而

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

does not. Note the quotation marks around myString.

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