SyntaxError:位于JSON的意外的令牌\

时间:2017-01-27 08:20:41

标签: javascript json node.js

我正在尝试在NodeJS / Javascript中解析String到JSON,这是我的字符串(我无法更改,来自外部数据库):

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

我在打电话:

JSON.parse(row.raw_data)

但是得到了:

SyntaxError: Unexpected token \ in JSON at position

我实际上认为双重转义是在字符串/ JSON中转义的正确方法。

1 个答案:

答案 0 :(得分:9)

您的JSON无效。你说你不能改变它,这是不幸的。

看起来就像它被双重字符串化一样,但最后的引号却被取消了。如果是这样,您可以通过在每端添加"然后对其进行双重解析来修复它,如下所示:



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




但理想情况下,您希望浏览数据库并更正无效数据。

  

我实际上认为双重转义是在字符串/ JSON中转义的正确方法。

在JSON中,字符串用双引号(")包装,而不是双重转义。您只能在字符串中使用双引号(使用单个\)。

如果您一直在手动创建JSON字符串(在代码中),不要。 :-)而是,创建要保存的结构,然后对其进行字符串化。手动构建JSON字符串容易出错,但正确的JSON字符串将是可靠的。