JSON.parse 意外字符错误

IT技术 javascript json
2021-02-03 14:15:56

我收到此错误:

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个回答

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

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.
我在 data.results 上未定义(数据是一个 JSON 对象)。Stack 告诉我通过 data = JSON.parse(data) 使它成为一个 js 对象。但我收到 JSON.parse 意外字符错误。
2021-03-15 14:15:56
我想为第一句话点赞,但你为什么要重新解析?
2021-03-25 14:15:56
@Mathletics 所有人都认为 JSON.parse 做了一些安全检查。新台币
2021-03-30 14:15:56
@MarcelKorpel,数学:对。更新。
2021-03-31 14:15:56
那真好笑。爱它。<3
2021-03-31 14:15:56

您可以通过简单地使用 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));
JSON.stringify 是老大。
2021-03-31 14:15:56

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

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

例如:

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

给出错误,而

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

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

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