为什么JSON.parse会给出无效字符

时间:2016-04-26 19:52:35

标签: javascript

编辑:解决了......我需要在这里使用JSON.stringify()。卫生署。

我正在尝试JSON.parse()一个响应令牌,并在Internet Explorer中不断收到“SyntaxError:Invalid character”。 (由于CORS,Chrome不确定此问题是否存在,但这是一个不同的问题。)

console.log(response.token.isAdmin)
// false

console.log(JSON.parse(response.token.isAdmin))
// false

console.log(response.token.tokenValue)
// 36151b9e-ad0d-49de-a14b-5461489c7065

console.log(JSON.parse(response.token.tokenValue.toString()))
// SyntaxError: Invalid character

我尝试解析的任何字符串都会出现同样的错误。如果源不是字符串(布尔值,整数),则解析工作正常。

为什么这不起作用,如何将我的对象放入字符串?

2 个答案:

答案 0 :(得分:5)

36151b9e-ad0d-49de-a14b-5461489c7065是无效的JSON。

JSON.parse('36151b9e-ad0d-49de-a14b-5461489c7065'); // SyntaxError

也许你的意思是"36151b9e-ad0d-49de-a14b-5461489c7065",这是有效的JSON。

JSON.parse('"36151b9e-ad0d-49de-a14b-5461489c7065"');
// 36151b9e-ad0d-49de-a14b-5461489c7065

或许你想将字符串化为JSON而不是解析

JSON.stringify('36151b9e-ad0d-49de-a14b-5461489c7065');
// "36151b9e-ad0d-49de-a14b-5461489c7065"

答案 1 :(得分:1)

您似乎正在尝试解析无效JSON的字符串。

您可以解析这样的字符串:

/dev/urandom

但你无法解析没有格式化为JSON的东西,比如:

random_int

如果您希望将JSON对象解析为字符串,则可以使用var parseMe = '{ "tokenValue": "36151b9e-ad0d-49de-a14b-5461489c7065" }'; var parsed = JSON.parse(parseMe); // parsed is now equal to Object {tokenValue: "36151b9e-ad0d-49de-a14b-5461489c7065"} ,如下所示:

var parseMe = '36151b9e-ad0d-49de-a14b-5461489c7065';
var parsed = JSON.parse(parseMe);

// Uncaught SyntaxError: Unexpected token b in JSON at position 5