按照ECMA第五版中的解释,JSON是一个提供了stringify和parse方法的内置对象,前者用于将js对象转化为符合json标准的字符串,后者将符合json标准的字符串转化为js对象。json标准参考<a href=" target="_blank">json.org</a>。(其实将符合json标准的字符串转化为js对象可以用eval,但是eval性能相对差且存在安全隐患(会执行json字符串中的代码),本文仅写JSON) 本文写的是转义字符对JSON.parse方法的影响。 一般来说在JSON.parse的参数包含转移字符的时候会遇到两次转义的问题,其实第一次是字符串本身的转义,第二次是将真正转为js对象的转义。 举例如下: 例子一:将字符串'{"a":"b","b":"\\"}'传递给JSON.parse,首先解析器提取单引号括起来的字符串时认为第一个转义第二个 第三个转义第四个,也就是说实际可输出字符串是{"a":"b","b":"\"}(可通过console.log('{"a":"b","b":"\\"}')验证),之后正式转为js对象的时候还有一次转义,也就是实际输出字符转中的第一个转义第二个(此时只有两个)。所以console.log(JSON.parse('{"a":"b","b":"\\"}') );输出结果为Object {a: "b", b: ""},也就是说实际显示的数据为一个(实际可输出一个说明在此之前还有一个)。 例子二: var obj = { a : "b", b : "\", c : { b : "\", a : { b : "\" } } }; var json_str = JSON.stringify(obj); console.log( JSON.stringify(obj) ); console.dir(JSON.parse(json_str)); console.dir(JSON.parse('{"a":"b","b":"\\","c":{"b":"\\","a":{"b":"\\"}}}'));输出结果如下图 pic 根据转义规则,实际输出一个在这个之前必定有一个。所以如上第一行输出按照书写来说为'{"a":"b","b":"\\","c":{"b":"\\","a":{"b":"\\"}}}',可通过第三条输出来验证。 总结,如果想在js对象中出现一个,需要在json字符串中出现四个 。 对于其他的其他的特殊字符 1.双引号("),如果正确出现双引号应为\" 2.n,如想想出现正确的换行需要json字符串中是\n,其实是先对n中的转义,n变成了普通字符,在解析为js对象的时候n与之前的(只有一个了)被解释为换行。如下的两个与此类似。 3.r,\r 4.t,\t
推荐整理分享转义字符()对JavaScript中JSON.parse的影响概述(转义字符对应英文),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:转义字符有,转义字符对应的ascii码,转义字符对应的ascii码,转义字符对照表换页,转义字符对照表换页,转义字符对照表换页,转义字符对应的ascii码,转义字符对照表,内容如对您有帮助,希望把文章链接给更多的朋友!
javaScript NameSpace 简单说明介绍 打造JavaScript命名空间其实很简单,只需要将自己的函数、对象、变量等放在一个伪命名空间中,即用一个匿名函数包装起来。(function(){function$(id){returndo
JavaScript中setAttribute用法介绍 setAttribute(stringname,stringvalue):增加一个指定名称和值的新属性,或者把一个现有的属性设定为指定的值。1、样式问题setAttribute("class",value)中class是指改
通过一段代码简单说js中的this的使用 今天有朋友说遇到如下代码,让我帮解释原因varname="TheWindow";varobject={name:"MyObject",getNameFunc:function(){returnfunction(){returnthis.name;};}};alert(object.getNameFunc()());