javascript

位置:IT落伍者 >> javascript >> 浏览文章

转义字符(\)对JavaScript中JSON.parse的影响概述


发布日期:2019年11月30日
 
转义字符(\)对JavaScript中JSON.parse的影响概述
JSON是一个提供了stringify和parse方法的内置对象前者用于将js对象转化为符合json标准的字符串后者将符合json标准的字符串转化为js对象本文为大家介绍下转义字符对JSONparse方法的影响

按照ECMA第五版中的解释JSON是一个提供了stringify和parse方法的内置对象前者用于将js对象转化为符合json标准的字 符串后者将符合json标准的字符串转化为js对象json标准参考<a href="(其实将符合json标准的字符串转化为js对象可以用eval但是 eval性能相对差且存在安全隐患(会执行json字符串中的代码)本文仅写JSON)
本文写的是转义字符对JSONparse方法的影响

一般来说在JSONparse的参数包含转移字符的时候会遇到两次转义的问题其实第一次是字符串本身的转义第二次是将真正转为js对象的转义

举例如下
例 子一将字符串{"a":"b""b":"\"}传递给JSONparse首先解析器提取单引号括起来的字符串时认为第一个转义第二个 第三个转义第四个也就是说实际可输出字符串是{"a":"b""b":""}(可通过 consolelog({"a":"b""b":"\"})验证)之后正式转为js对象的时候还有一次转义也就是实际输出字符转中的第 一个转义第二个(此时只有两个)所以consolelog(JSONparse({"a":"b""b":"\"}) );输出结果为Object {a: "b" b: ""}也就是说实际显示的数据为一个(实际可输出一个说明在此之前还有一个)
例子二
var obj = {
a : "b"
b : ""
c : {
b : ""
a : {
b : ""
}
}
};
var json_str = JSONstringify(obj);
consolelog( JSONstringify(obj) );
consoledir(JSONparse(json_str));
consoledir(JSONparse({"a":"b""b":"\""c":{"b":"\""a":{"b":"\"}}}));输出结果如下图
pic
根据转义规则实际输出一个在这个之前必定有一个所以如上第一行输出按照书写来说为{"a":"b""b":"\""c":{"b":"\""a":{"b":"\"}}}可通过第三条输出来验证
总结如果想在js对象中出现一个需要在json字符串中出现四个

对于其他的其他的特殊字符
双引号(")如果正确出现双引号应为"
n如想想出现正确的换行需要json字符串中是n其实是先对n中的转义n变成了普通字符在解析为js对象的时候n与之前的(只有一个了)被解释为换行如下的两个与此类似
rr
tt

上一篇:js判断是手机访问还是电脑访问,进行自动跳转

下一篇:js获取dom的方法