Javascript JSON stringify无法使用replacer函数转义单引号
我试图用\'替换json字符串值中的单引号,但是只有当我尝试使用replacer函数时,它才起作用Javascript JSON stringify无法使用replacer函数转义单引号,javascript,json,Javascript,Json,我试图用\'替换json字符串值中的单引号,但是只有当我尝试使用replacer函数时,它才起作用 var myObj = { test: "'p'" } var replacer = function (key, value) { if (typeof value === 'string') return value.replace(/'/g, "\\'"); else return v
var myObj = {
test: "'p'"
}
var replacer = function (key, value) {
if (typeof value === 'string')
return value.replace(/'/g, "\\'");
else return value;
};
var JSONstring = JSON.stringify(myObj, replacer, ' ');
alert(JSONstring);
但是,如果在像这样创建字符串之后只进行简单的替换,而不使用replacer函数
var JSONstring = JSON.stringify(myObj).replace(/'/g, "\\'");
我用的正则表达式很好用
编辑-澄清-使用replace函数,输出值包含双反斜杠,如\\'p\\',这不是我所期望的
有人能解释一下吗?
JSON.stringify
对反斜杠进行编码
看
当您尝试在将采用JSON编码的字符串中插入反斜杠时,单个\
将变为\\
但是,当您解码时,JSON的双反斜杠将被解码为单反斜杠(我认为您将得到所需的结果)
如果您保留了准确的代码,然后在最后将警报(…)
替换为
alert( JSON.parse( JSONstring ).test );
你得到
\'p\'
JSON.stringify
对反斜杠进行编码
看
当您尝试在将采用JSON编码的字符串中插入反斜杠时,单个\
将变为\\
但是,当您解码时,JSON的双反斜杠将被解码为单反斜杠(我认为您将得到所需的结果)
如果您保留了准确的代码,然后在最后将警报(…)
替换为
alert( JSON.parse( JSONstring ).test );
你得到
\'p\'
值在字符串化之前传递给替换程序。当值字符串化时,替换程序的转义将被剥离 这就是为什么在json字符串化后调用replace()会起作用
值在字符串化之前传递给替换程序。当值字符串化时,替换程序的转义将被剥离 这就是为什么在json字符串化后调用replace()会起作用
我没有意识到我试图做的事情导致了无效的json,因为它都被包装在双引号中,我认为里面的内容无关紧要,并且被当作一个标签对待string@erotavlas是的,我没有提到,但实际上JSON带有“强制”单反斜杠不符合JSON规范。我没有意识到我试图做的事情导致了无效的JSON,因为它都被包装在双引号中,我认为里面的内容无关紧要,并且被当作一个标签对待string@erotavlas是的,我没有提到,但实际上JSON带有“强制”单个反斜杠不符合JSON规范。