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}},"===")) { ==="a": { ======"b": 1 ===} }