我注意到如果我在通过json传递给php的输入框上加上双引号,json_decode将返回null。因此,我决定在制作我的json时用\"
替换双引号。
因此,我有类似的东西:
var valueToSet = input.replace(/"/gi, '\\"');
上面的代码将""
替换为\"
...这样可行,现在我可以输入以下内容:
Hello hi "" " " " ' ' '' ' ' ' """
没有破坏任何东西。但是,如果我输入的内容如下:
Hello hi "" \ "
它破了。我怎样才能包括上面的替换,斜线也被替换了?我应该用什么替换斜线?与\\
?
谢谢!
答案 0 :(得分:2)
你不应该担心这些问题。我认为你手工制作JSON,而你应该使用专门的功能来处理这些细节。
JSON.stringify
方法适用于所有浏览器,如果存在,将使用本机实现。JSON.stringify
(IE版本为8.0,Firefox版本为3.5,Chrome版本为4.0,Safari版本为4.0,Opera版本为10.5)json_encode
要回答您的上一个问题,是的,\
应该替换为\\
,但同样应该由json_encode
完成。
答案 1 :(得分:2)
在Javascript中创建JSON字符串通常是通过创建要转换为JSON的数组或对象,然后在其上运行stringify()
方法来完成的。
例如:
var myData = {....some stuff here....};
var myJSON = JSON.stringify(myData);
有关详细信息,请参阅json.org上的此页:http://www.json.org/js.html
但请注意,并非所有浏览器都提供JSON字符串化和解析功能。如果您需要支持旧版浏览器,则可能需要使用库来添加此功能。 jQuery等库包括JSON编码功能,还有独立的JSON库。