举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 >

2023-06-23 13:18 JSON教程

js 转义字符处理

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

按照ECMA262第五版中的解释,JSON是一个提供了stringify和parse方法的内置对象,前者用于将js对象转化为符合json标准的字符串,后者将符合json标准的字符串转化为js对象。json标准参考<a href="http://json.org/" rel="external nofollow" target="_blank" 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: ""},也就是说实际显示的数据为一个(实际可输出一个说明在此之前还有一个)。


例子二:

[javascript] 
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":""}}}"));  
输出结果如下图:

json

根据转义规则,实际输出一个在这个之前必定有一个。所以如上第一行输出按照书写来说为"{"a":"b","b":"","c":{"b":"","a":{"b":""}}}",可通过第三条输出来验证。

总结:如果想在js对象中出现一个,需要在json字符串中出现四个 。

对于其他的其他的特殊字符:

1.双引号("),如果正确出现双引号应为"
2.n,如想想出现正确的换行需要json字符串中是n,其实是先对n中的转义,n变成了普通字符,在解析为js对象的时候n与之前的(只有一个了)被解释为换行。如下的两个与此类似。
3.r,r
4.t,t
阅读全文
以上是编程学为你收集整理的全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • htmldoctype HTML DOM Input Number type 属性

    htmldoctype HTML DOM Input Number type 属性

    2023-05-18

    Input Number type 属性 Input Number 对象实例返回 number 字段的表单元素类型:var x = document.getElementById("myNumber").t...

  • html dom元素 HTML DOM 元素

    html dom元素 HTML DOM 元素

    2023-04-05 HTMLDOM教程

    HTML DOM - 元素 本节您将要学习的是如何添加、删除和替换 HTML 元素。创建新的 HTML 元素 - appendChild() 如果您需要向 HTML D...

  • sass @each Sass @each指令

    sass @each Sass @each指令

    2023-06-20 Sass教程

    描述在@each中,定义了一个变量,其中包含列表中每个项目的值。语句@each $var in list or map下面简要解释语法。$var: 它表示变...

  • losslesscut合并 Less 合并

    losslesscut合并 Less 合并

    2023-04-30 Less教程

    描述它是LESS的一个特性,它允许使用单个属性从多个属性中为逗号或空格分隔列表添加值。它可以用于背景和变换属性。下表描述了合...

  •  Less 颜色通道函数

    Less 颜色通道函数

    2023-05-31 Less教程

    Less支持少数内置函数,用于设置通道的值。通道根据颜色定义设置值。HSL颜色具有色相,饱和度和亮度通道,RGB颜色具有红色,绿色...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部