JSON.parse意外字符错误


112

我收到此错误:

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

Answers:


224

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

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.

我想对第一句话表示赞成,但您为什么要重新解析?
Mathletics 2011年

1
@MarcelKorpel,数学:对。更新。
kennytm 2011年

@Mathletics所有帐户JSON.parse都会进行一些安全检查。NT
BF

5
那真好笑。爱它。<3
达斯(Garth Egregious)

1
我在data.results上未定义(数据是JSON对象)。Stack告诉我通过data = JSON.parse(data)使其成为js对象。但是我收到JSON.parse意外字符错误。
KasparTr

35

您可以通过简单地使用将对象传递给parse函数之前,确保将其字符串化 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));

3
JSON.stringify是老板。
肯米斯特

-1

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

JSON规范需要字符串双引号。

例如:

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

给出错误,而

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

才不是。请注意周围的引号myString

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.