使用场景:
1.接收后台返回的值 or 向后台传递参数
2.在页面间传递数据,特别是数组时(需要使用序列化,否则IE会报错:不能执行已经释放Script的代码)
3.在进行本地存储时(存储在本地window.localStorage.setItem(key,value)存储的value是json序列化的字符串;获取得到的window.localSorage.getItem(key)也是json序列化的字符串,需要经过json的反序列化进行使用;)
简单介绍:
序列化:将Object转换成JSON字符串
1.使用stringify
let data = JSON.stringify(obj); // 将JSON对象转化为JSON字符
2.使用toJSONString
let data = obj.toJSONString(); // 将JSON对象转化为JSON字符
反序列化:JSON字符串转化为Object
1.使用parse (推荐)
let obj = JSON.parse(data); // 由JSON字符串转换为JSON对象
2.使用parseJSON
let obj = data.parseJSON(); // 由JSON字符串转换为JSON对象
3.使用eval (由于json是以”{}”的方式来开始以及结束,在JS中会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式,所以要添加 ("("+data+")" );
let obj = eval("("+josnStr+")"); // 由JSON字符串转换为JSON对象
代码演示:
<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
<script>
let obj = {
a: 1,
b: "lemon",
c: true,
d: [1, 3, 0],
e: { x: 0, y: 1 },
};
// JSON对象 ---> JSON字符
let data1 = JSON.stringify(obj);
console.log(data1, 'JSON对象 ---> JSON字符1');
// JSON字符串---> JSON对象
var obj1 = JSON.parse(data1);
console.log(obj1, 'JSON字符串---> JSON对象1');
var obj3 = eval("(" + data1 + ")");
console.log(obj3, 'JSON字符串---> JSON对象2');
$(function () {
var obj = jQuery.parseJSON('{ "a": 1, "b": "lemon", "c": true, "d": [1, 3, 0], "e": { "x": 0, "y": 1 } }');
console.log(obj, 'JSON字符串---> JSON对象3');
})
</script>