1.JSON.stringify()只序列化可遍历属性(enumerable=true)
var obj = {};Object.defineProperties(obj, { ?‘foo‘: { ???value: 1, ???enumerable: true ?}, ?‘bar‘: { ???value: 2, ???enumerable: false ?}});JSON.stringify(obj); // "{"foo":1}"
2. JSON.stringify(obj, fn|arr);
1)当第二个参数为数组时,表示需要被序列化的对象的属性列表;
2)当第二个参数为方法时,function(key, value){}表示每个属性对应的key-value值,最终的返回值可以用来改变原来的结果。
该方法可以用来在序列化之前改变对象的内容。
var o = {a: {b: 1}};function f(key, value) { ?console.log("["+ key +"]:" + value); ?return value;}JSON.stringify(o, f)// []:[object Object]// [a]:[object Object]// [b]:1// ‘{"a":{"b":1}}‘// 递归处理,每次处理上次的返回结果
3. JSON.stringify(obj,null,number|string)
可以接受第三个参数,这个可以用来按格式打印对象
1)当第三个参数为数值时,表示每个属性前的空格数(<10)
console.log(JSON.stringify({a:{b:1}},null,2)){ ?"a": { ???"b": 1 ?}}
2)当第三个参数为字符串时,表示在每个属性前添加该字符串(<10)
console.log(JSON.stringify({a:{b:1}},null,"===")){==="a": {======"b": 1===}}
JSON.stringify()的不常见用法
原文地址:https://www.cnblogs.com/lyraLee/p/10609895.html