1 JSON.parse()--JSON解析器
1.1 概述
JSON 通常用于与服务端交换数据。
在接收服务器数据时一般是字符串。
我们可以使用 JSON.parse()方法将数据转换为 JavaScript对象。
1.2 语法
1.3 实例
1.4 异常
1.4.1 解析 Date 对象数据
JSON 不能存储 Date对象。
如果你需要存储 Date 对象,需要将其转换为字符串。
之后再将字符串转换为 Date对象。
启用JSON.parse的第二个参数reviver,一个转换结果的函数,对象的每个成员调用此函数。
1.4.2 解析函数(了解)
JSON 不允许包含函数,但你可以将函数作为字符串存储,之后再将字符串转换为函数。
2 JSON.stringify()
2.1 概述
JSON 通常用于与服务端交换数据。
在向服务器发送数据时一般是字符串。
我们可以使用 JSON.stringify()方法将 JavaScript对象转换为字符串。
2.2 语法
2.3 实例
2.4 异常
2.4.1 解析 Date 对象数据
JSON 不能存储 Date对象。
JSON.stringify() 会将所有日期转换为字符串。
2.4.2 解析函数(了解)
JSON 不允许包含函数,JSON.stringify()会删除 JavaScript对象的函数,包括 key和 value。
在执行JSON.stringify()函数前将函数转换为字符串来避免以上问题的发生:
3 eval()
3.1 概述
eval()函数可用于将 JSON文本转换为 JavaScript对象。
eval()使用的是 JavaScript编译器,可解析 JSON文本,然后生成 JavaScript对象。必须把文本包围在括号中,这样才能避免语法错误:
3.2 实例
推荐使用json解析器
4 Json字符串
4.1 前后端传递格式
后台接受json,和前端显示都是以json字符串形式,而SpringMVC传回来的也是字符,但是在success回调函数被调用前将其转换成json对象,然后传给了data,所以data就是封装后的json对象,可以直接通过对象的方式获取值
4.2 转换图
json
var = …
alert(); 只要调用了js的方法,得到的结果就是js对象
4.3 Json(js)对象转换为json字符串
4.3.1 原生
第一种:使用最原始的for循环自己拼装组合
4.3.2 使用自带json对象
第二种:使用浏览器自带的JSON对象,缺点是兼容性不好,对于ie8以下的版本不支持。
var userinfo = { name: "张三", age: 1, classname: "一年级",friends:["N1","N2","N3"] };
//Json 对象转换为json字符串
var s = JSON.stringify(userinfo);4.3.3 引用json2.js的json对象
第三种:引用json2.js ,使用JSON对象转换,兼容所有浏览器var userinfo = { name: "张三", age: 1, classname: "一年级",friends:["N1","N2","N3"] }; var s = JSON.stringify(userinfo);
4.4 json字符串转换为Json(js)对象
4.4.1 $.parseJSON()
第一种:使用Ajax 的转换对象var workJsonString = "{\"name\":\"张三\",\"age\":1,\"classname\":\"一年级\"}"; var work1 = $.parseJSON(workJsonString);//使用Ajax
4.4.2 浏览器自带的JSON对象
第二种:使用浏览器自带的JSON对象,缺点是兼容性不好,对于ie8以下的版本不支持。
var userinfo = { name: "张三", age: 1, classname: "一年级",friends:["N1","N2","N3"] }; //Json 对象转换为json字符串 var s = JSON.stringify(userinfo);
4.4.3 引用json2.js
第三种:引用json2.js ,使用JSON对象转换,兼容所有浏览器var workJsonString = "{\"name\":\"张三\",\"age\":1,\"classname\":\"一年级\"}"; var work3 = JSON.parse(workJsonString);
4.4.4 eval()
第四种:使用eval()对象 注意:json字符串的两端需要加上一个括号var workJsonString = "{\"name\":\"张三\",\"age\":1,\"classname\":\"一年级\"}"; var work4=eval("(" + workJsonString + ")");