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

JSON是一个提供了stringify和parse方法的内置对象,前者用于将js对象转化为符合json标准的字符串,后者将符合json标准的字符串转化为js对象,本文为大家介绍下转义字符对JSON.parse方法的影响
 

按照ECMA262第五版中的解释,JSON是一个提供了stringify和parse方法的内置对象,前者用于将js对象转化为符合json标准的字 符串,后者将符合json标准的字符串转化为js对象。json标准参考<a href="http://json.org/" 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

时间: 2024-12-26 17:21:44

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

转义字符(\)对JavaScript中JSON.parse的影响概述_基础知识

按照ECMA262第五版中的解释,JSON是一个提供了stringify和parse方法的内置对象,前者用于将js对象转化为符合json标准的字符串,后者将符合json标准的字符串转化为js对象.json标准参考<a href="http://json.org/" target="_blank">json.org</a>.(其实将符合json标准的字符串转化为js对象可以用eval,但是eval性能相对差且存在安全隐患(会执行json字符串中

javascript中JSON的操作介绍

JSON语法       JSON建构于两种结构:       对象--名称/值对的集合.不同的语言中,它被理解为对象,纪录,结构,字典,哈希表,有键列表(keyed list),或者关联数组.一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"'名称/值' 对"之间使用","(逗号)分隔.       数组--值的有序列表.在大部分语言中,它被理

Javascript中json数组的使用教程

本文主要是对JS操作JSON的要领做下总结. 在JSON中,有两种结构:对象和数组. 1. 一个对象以"{"(左括号)开始,"}"(右括号)结束.每个"名称"后跟一个":"(冒号):"'名称/值' 对"之间运用 ","(逗号)分隔. 名称用引号括起来:值如果是字符串则必须用括号,数值型则不须要.例如: var o={"xlid":"cxh",&qu

Chrome中JSON.parse的特殊实现_json

IE8/Firefox3.5+/Chrome4/Safari4/Opera10 已实现该方法.使用方式很简单: 复制代码 代码如下: var str = '{"name":"jack"}'; var json = JSON.parse(str); alert(json.name); 在以上实现该方法的浏览器中都会弹出"jack". 如果给Object.prototype添加一个解析json的方法(某人可能会强烈反对这么干污染了原生对象,这里纯粹为

JavaScript中Math对象方法使用概述

 JavaScript中Math对象方法如向上取整,有小数就整数部分加1,四舍五入.向下取整等等,下面为大家详细介绍下 1.丢弃小数部分,保留整数部分 parseInt(5/2)   2.向上取整,有小数就整数部分加1   Math.ceil(5/2)   3,四舍五入.   Math.round(5/2)   4,向下取整   Math.floor(5/2)   Math 对象的方法 FF: Firefox, N: Netscape, IE: Internet Explorer   方法 描述

javascript中JSON数据接受,处理介绍

js读取JSON的方法我接触到的有两种: 方法一:函数构造定义法返回  代码如下 复制代码 var strJSON = "{name:'json name'}";//得到的JSON var obj = new Function("return" + strJSON)();//转换后的JSON对象 alert(obj.name);//json name 方法二:js中著名的eval函数  代码如下 复制代码 var strJSON = "{name:'jso

javascript中JSON.stringify 语法介绍

认识javascript也不短的时间了,可是这个用法说实在的,我还是第一次见过,惭愧啊惭愧啊.于是乎,在网上找了写资料,写了些例子 希望能给园子们一些帮助. 作用:这个函数的作用主要是为了系列化对象的. 可能有些人对系列化这个词过敏,我的理解很简单.就是说把原来是对象的类型转换成字符串类型(或者更确切的说是json类型的).就这么简单.打个比方说,你有一个类,那么你可以通过这个方法转换成相应的json类型的.很简单吧. 接着看. 语法: JSON.stringify(value [, repla

JavaScript中的parse()方法使用简介

 Javascript Date.parse() 方法接受一个日期字符串,并返回自1970年1月1日午夜的毫秒数. 语法 1 Date.parse(datestring) 注:括号内的数据是可选的 下面是参数的详细信息: datestring : 一个字符串,表示日期 返回值: 自1970年1月1日午夜的毫秒数. 例子: 1 2 3 4 5 6 7 8 9 10 11 <html> <head> <title>JavaScript parse Method</ti

JavaScript中的parse()方法使用简介_基础知识

 Javascript Date.parse() 方法接受一个日期字符串,并返回自1970年1月1日午夜的毫秒数.语法 Date.parse(datestring) 注:括号内的数据是可选的 下面是参数的详细信息:     datestring : 一个字符串,表示日期 返回值: 自1970年1月1日午夜的毫秒数.例子: <html> <head> <title>JavaScript parse Method</title> </head> &l