我收到此错误:
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
答案 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
周围的引号。