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

Why does JSON.parse give invalid character

本文关键字:无效 字符 JSON parse 为什么      更新时间:2023-09-26

编辑:已解决...我需要在这里使用 JSON.stringify()。嘟嘟。

我正在尝试JSON.parse()一个响应令牌,并在Internet Explorer中不断收到"语法错误:无效字符"。(不确定由于 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

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

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

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"
您似乎

正在尝试解析无效的 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"}

但是您不能解析未格式化为 JSON 的内容,如下所示:

var parseMe = '36151b9e-ad0d-49de-a14b-5461489c7065';
var parsed = JSON.parse(parseMe);
// Uncaught SyntaxError: Unexpected token b in JSON at position 5

相反,如果您想将 JSON 对象解析为字符串,您可以使用如下所示JSON.stringify()

var stringifyMe = { tokenValue: '36151b9e-ad0d-49de-a14b-5461489c7065' };
var stringified = JSON.stringify(stringifyMe);
// stringified is now equal to the string {"tokenValue":"36151b9e-ad0d-49de-a14b-5461489c7065"}