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
我觉得这应该是另一种方式!