parsingstring化的JSONstring时出错

假设我有一个对象:

person={'name':'john "Garfield"'}; 

我把它转换成一个string:

 JSON.stringify(person); // RESULT: {"name":"john \"Garfield\""} 

然后我将这个string存储在MySQL或其他任何东西,后来我得到node.js上的string(使用交互式控制台):

 string = '{"name":"john \"Garfield\""}'; // RESULT: {"name":"john "Garfield""} 

然后我parsing对象:

 JSON.parse(string); RESULT: SyntaxError: Unexpected token G 

我如何parsing存储的JSONstring化string? 我把它们放在MySQL上,当MySQL库请求时,它们会松开它们的缩放斜线。

你应该注意到,当你有string时,反斜杠已经“失踪”了。 如果它存储在数据库中,并从数据库中检索,那么代码应该工作得很好。 但是,如果您手动input该stringparsing出来,则需要转义反斜杠。

 string = '{"name":"John \\"Garfield\\""}'; 

如果反斜杠在MySQL插入过程中丢失,那么在插入它们之前尝试转义它们。

我已经用MySQL上的REPLACE解决了这个问题,我不明白为什么必须这样做,我明白,但我不喜欢这个解决scheme,使用node.js和一个MySQL库并调用MySQL从节点这里是我所做的陈述:

 REPLACE(`field`, "\\\\", "\\\\\\\\") as field2 

这看起来愚蠢,但是当你在节点上声明一个string时,它会自动转义,那么这个:

 string = 'REPLACE(`field`, "\\\\", "\\\\\\\\") as field2'; 

变成这样:

 REPLACE(`field`, "\\", "\\\\") as field2 

当被MySQL收到时,它变成:

 REPLACE(`field`, "\", "\\") as field2 

我觉得这应该是另一种方式!