JSON

90 阅读2分钟

JSON对象的两种方法:stringify()和parse()

1、JSON.stringify(value, replacer,space)--把JavaScript对象序列化为JSON字符串

1)value:将要序列化为JSON字符串的值(必填) 当只有第一个参数时

let obj = {
    name: 'Rabbit',
    age: 22,
};
console.log(JSON.stringify(obj));
打印:
{"name":"Rabbit","age":22",}

2)replacer:过滤器参数。参数可能为数组,函数或null(可选)

数组:只有包含在这个数组中的属性名,才会显示;

函数:传入的函数接收两个参数,属性名和属性值;

没有提供/null:则不过滤,属性全部显示;

①第一个参数为数组,第二个参数为函数

let arr = ['Rabbit', 22];
console.log(JSON.stringify(arr, function (key, value) {
    if (typeof value === 'string') {
        return value;
    }
    return value;
}, 4));
结果:
[
    "Rabbit",
     22
]

②第一个参数为数组,第二个参数为数组,第二个参数会被忽略

let arr = ['Rabbit', 22];
console.log(JSON.stringify(arr, [1, 2], 4));
结果:
[
    "Rabbit",
     22
]

③第一个参数为对象,第二个参数为数组

let obj = {
    name: 'Rabbit',
    age: 22,
};
console.log(JSON.stringify(obj, ['name', 'age'], 4));
//如果此时数组里的字段与对象中的不对应,则不会显示
结果:
{
    "name": "Rabbit",
    "age": 22
}

④第一个参数为对象,第二个参数为函数

let obj = {
    name: 'Rabbit',
    age: 22,
};
console.log(JSON.stringify(obj, function (key, value) {
    if (typeof value === 'string') {
        return value;
    }
    return value;
}, 4));
结果:
{
    "name": "Rabbit",
    "age": 22
}

3)space:文本添加缩进、空格和换行符(可选)

数字:最大为10,大于10则转换为10,小于1则没有空格;

字符串:字符串长度最长不超过10个,大于10则取前10,替代空格显示;

没有提供/null:没有空格

2、JSON.parse() --把JSON字符串解析为原生JavaScript对象

JSON.parse(obj, [reviver])

1)obj:要被解析为JavaScript对象的字符串

2)reviver:函数,将在每个键值对上调用,用来修改解析生成的原始值,在parse返回之前调用(可选)

//像空数组里面添加对象,且对象不会被覆盖,可以写成这样 let admin=[] child.map((item)=>{ admin.push({'title':item.name})

    })