JSON.parse() 与 JSON.stringify()
2018-10-09 本文已影响35人
启灵Alex
JSON.stringify()
JSON.stringify()在MDN中的解释:将一个JavaScript值(对象或者数组)转换为一个 JSON字符串
语法
JSON.stringify(value [, replacer [, space]])
>value:JavaScript值(对象或者数组)
>replacer:如果是函数,转换时会经过函数的处理, 如果是数组,转换时只保留数组中有的属性名
>space:指定缩进时用的字符串
示例
//要转换的js对象
var session = {
'screens' : [],
'state' : true
};
//给对象赋值
session.screens.push({"name":"screenA", "width":450, "height":250});
session.screens.push({"name":"screenB", "width":650, "height":350});
//将对象转换成JSON字符串
JSON.stringify(session);//将对象转换为JSON字符串,不进行任何操作
JSON.stringify(session, (k, v)=> { if(typeof v === "string") return undefined;return v;});//将对象转换为JSON字符串,用函数去掉string型值
JSON.stringify(session, ['state']);//将对象转换为JSON字符串,只保留state属性值
JSON.stringify(session, (k, v)=> { if(typeof v === "string") return undefined;return v;}, '\t');//将对象转换为JSON字符串,用函数去掉string型值,且以制表符缩进
如果对象拥有 toJSON 方法,那么该 toJSON 方法就会覆盖该对象默认的序列化行为:不是那个对象被序列化,而是调用 toJSON 方法后的返回值会被序列化
JSON.parse()
JSON.parse()在MDN中的解释:用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)
语法
JSON.parse(text [, reviver])
>text :要被解析成JavaScript值的字符串
>reviver:如果是一个函数,则规定了原始值如何被解析改造
示例
var json = '{"result":true, "count":42}';
JSON.parse(json);
JSON.parse('{"foo":5,"too":"abc"}');
JSON.parse('{"a":5,"b":6,"c":3}', (k,v)=>{if(v>5) return v*2;return v});
JSON.parse() 不允许用逗号作为结尾,如:JSON.parse('{"foo":5,"too":"abc",}');