js对象序列化的过程,就是对象转换为JSON的过程。
JSON.stringify() 将对象序列化成JSON。(接收对象,输出字符串)
var obj = {x:2,y:3}; var str = JSON.stringify(obj); //输出 {"x":2,"y":3}
序列化时,对象的函数序列化时不会显示。
var obj = {a:1,b:2,c:function(){ console.log(3); }}; var str = JSON.stringify(obj); //输出 {"a":1,"b":2}
对象函数若有toJSON,序列化后其他属性都不会显示,只会显示toJSON的返回值,若toJSON无返回值则显示undefined。如果在toJSON之后有toJSON属性,则之前的toJSON函数无效,其他对象属性正常显示。
var obj = {a:1,b:2,toJSON:function(){ return "这是一个对象" },j:4,k:5}; var str = JSON.stringify(obj); //输出 "这是一个对象"
var obj = {a:1,b:2,toJSON:function(){ return "这是一个对象" },j:4,k:5,toJSON:6}; var str = JSON.stringify(obj); //输出 {"a":1,"b":2,"toJSON":6,"j":4,"k":5}
JSON.parse() 将JSON反序列化为对象。(接收字符串,输出对象)
var json_s = ‘{"zhong":"中","guo":"国"}‘; var obj = JSON.parse(json_s); //输出 obj.zhong = "中" obj.guo = "国"
序列化时,
若对象属性值为undefined,序列化时不会显示;
若对象属性值为NaN或Infinity,序列化时都被视为null;
若对象属性值为时间,序列化时会被转换为UTC的时间格式。
var obj = {a:undefined,b:NaN,c:Infinity,d:new Date()}; var str = JSON.stringify(obj); //输出 {"b":null,"c":null,"d":"2016-09-11T15:44:21.725Z"}
时间: 2024-10-14 18:38:31