语法错误:JSON中位置处出现意外的\符号。

5

我想在NodeJS/Javascript中将一个字符串解析为JSON格式,这是我的字符串(来自外部数据库,无法更改):

'{\\"value1\\":\\"XYZ\\",\\"value2\\":\\"ZYX\\"}'

我正在调用:

JSON.parse(row.raw_data)

但是正在获得:

SyntaxError: Unexpected token \ in JSON at position

我曾经认为在字符串/JSON中使用双重转义是正确的转义方式。

1个回答

9

您的JSON格式无效。很遗憾,您说您不能更改它。

看起来这个JSON已经被二次转换成字符串格式,但最外层的引号被省略了。如果是这样的话,您可以通过在每个末尾添加"然后进行双重解析来修复它,像这样:

var str = '{\\"value1\\":\\"XYZ\\",\\"value2\\":\\"ZYX\\"}';
str = '"' + str + '"';
var obj = JSON.parse(JSON.parse(str));
console.log(obj);

理想情况下,您需要通过数据库并纠正无效数据。

我曾经认为在字符串/JSON 中进行双重转义是正确的转义方式。

在 JSON 中,字符串用双引号(")括起来,而不是双重转义。您只需在字符串中使用一个单一的 \ 来转义双引号。

如果您一直在手动创建 JSON 字符串(在代码中),请不要这样做。 :-) 相反,创建您要保存的结构,然后将其字符串化。手动构建 JSON 字符串容易出错,但适当的 JSON 字符串化器将是可靠的。


1
我最初想使用正则表达式去除反斜杠,但是你的解决方案更好。因此,我取消了编写自己的答案,只能说:点赞 :-) - Golo Roden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接