JS技巧---JSON.stringify序列化对象
⾸先来看语法:
JSON.stringify(value[, replacer [, space]])
参数:
value:将要被序列化的变量的值
replacer:替代器。可以是函数或者是数组,如果是⼀个函数,则 value 每个属性都要经过这个函数的处理,该函数的返回值就是最后被序列化后的值。如果是⼀个数组,则要求该数组的元素是字符串,且这些元素会被当做 value 的键(key)进⾏匹配,最后序列化的结果,是只包含该数组每个元素为 key 的值。
space:指定输出数值的代码缩进,美化格式之⽤,可以是数字或者字符串。如果是数字(最⼤为10)的话,代表每⾏代码的缩进是多少个空格。如果是字符串的话,该字符串(最多前⼗个字符)将作显⽰在每⾏代码之前。
这时候,你应该知道了。我们可以⽤ JSON.stringify 来做序列化时的过滤,相当于我们可以⾃定义 JSON.stringify的解析逻辑。
使⽤函数过滤并序列化对象:
// 使⽤“函数”当替代器
function replacer(key, value) {
if (typeof value === "string") return undefined;
return value;
}
var foo = {
name: "dingW",
model: "box",
age: 23,
transport: "car",js获取json的key和value
month: 7
};
var jsonString = JSON.stringify(foo, replacer);
// {"age":23,"month":7}
使⽤数组过滤并序列化对象:
// 使⽤“数组”当替代器
const user = {
name: 'zollero',
nick: 'z',
skills: ['JavaScript', 'CSS', 'HTML5']
};
JSON.stringify(user, ['name', 'skills'], 2);
// "{
//  "name": "zollero",
//  "skills": [
//    "JavaScript",
//    "CSS",
//    "HTML5"
//  ]
// }"
还有⼀个有意思的东西,是对象的 toJSON 属性。
如果⼀个对象有 toJSON 属性,当它被序列化的时候,不会对该对象进⾏序列化,⽽是将它的toJSON ⽅法的返回值进⾏序列化。
见下⾯的例⼦:
var obj = {
foo: 'foo',
toJSON: function() {
return'bar';
}
};
JSON.stringify(obj);      // '"bar"'
JSON.stringify({x: obj}); // '{"x":"bar"}'
(笔记⽤)侵删

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。