当参数为一个数组的时候,可以通过key来筛选最终要转化的字符串JSON.stringify(obj,['name','age'])
当参数为一个函数的时候,转化的结果,全依赖于函数的返回值。处理顺序是如果是个数组,处理到数组第一号元素发现还是数组或是对象的时候就进去循环,直到所有的能遍历的都被处理到再进行下一个运算。JSON.stringify(obj,(key,val)=>{if(key!='sex')return val})
JSON.stringify(obj,null,4)
可以看到,在控制台输出的代码变的很规整了。
JSON.parse只拥有两个参数,第一个就是把这个字符串转换为JSON对象,第二个就是筛选对象那么现在如果再有这样的需求,把一个JSON对象下的所有属性为sex中的boy,替换为male,girl替换为female,age大于20的age条目不显示,只要20以下的小鲜肉,那么就很好处理啦
var testJSON = [ { "name": "Jansen1", "age": 18, "sex": "boy" }, { "name": "Jansen2", "age": 2, "sex": "girl" }, { "name": "Jansen3", "age": 19, "sex": "girl" }, { "name": "Jansen4", "age": 22, "sex": "boy" }, { "name": "Jansen5", "age": 22, "sex": "boy" }, { "name": "Jansen6", "age": 22, "sex": "girl" }, { "name": "Jansen7", "age": 19, "sex": "boy" }, { "name": "Jansen8", "age": 19, "sex": "boy" } ]; var newJSON = JSON.parse(JSON.stringify(testJSON,(key,val)=>{ if(key === 'sex'){ return val === 'boy' ? 'male' : 'female'; } if(key === 'age' && val < 20){ return val } else if(key !== 'age'){ return val; } },4))