json

    技术2023-07-02  85

    1.json是一种数据格式,而不是编程语言.不从属与JavaScript,很多编程语言都有针对json的解析器和序列化器

    2.语法:可以表示以下三种类型的值

    简单值:字符串,数字,布尔,null,不支持undefined(与JavaScript最大的区别在于,json字符串必须使用双引号,单引号会导致语法错误)

    对象:表示一组无序的键值对(属性名也要加双引号,没有变量的声明)

    数组:一组有序值的列表

    不支持变量,函数,对象的实例

    3.SJON对象的两种方法:

    stringify() 把JavaScript对象转换成json字符串

    parse() 把json字符串解析成原生JavaScript值

    4.stringify()

    stringify()接收三个参数,第一个参数是要解析的对象,第二个是过滤器,第三个是保留缩进

    第二个参数可以是一个数组,也可以是一个函数,函数的话接收两个参数:属性名和属性值.注意:如果函数的返回值是undefined,那么该属性会被删除.

    let person = {

                name: 'zhangsan',

                sex: "男",

                age: 20

            }

            let personText = JSON.stringify(person, ['name', 'age'], 4);

    结果:{

    "name": "zhangsan",

    "age": 20

    }

     

     let person = {

                name: 'zhangsan',

                sex: "男",

                age: 20

            }

            let personText = JSON.stringify(person, ['name', 'age'], 4);

            let personText2 = JSON.stringify(person, function(key, value) {

                switch (key) {

                    case 'name':

                        return 'lisi'

                    case 'sex':

                        return undefined

                    default:

                        return value

                }

            });

    结果:{"name":"lisi","age":20}

    tojson()方法可以作为过滤器的一个补充(能够将Data对象自动转换成ISO 8601日期字符串).序列化的内部顺序:

    (1)如果存在toJSON方法,并且通过他可以取得有效的值,那么就调用这个方法,否则,返回对象本身

    (2)如果定义了第二个参数,那么就应用这个过滤器,出入过滤器的值是第一步返回的值

    (3)对第二步的每个值进行序列化

    (4)如果定义了第三个参数,进行响应的格式化

    5.parse()

    parse方法也可以接收第二个参数(还原函数),可以将日期字符串转换成Data对象

    let person = {

                name: 'zhangsan',

                releaseData: new Date(2011, 11, 1)

            }

            let personText = JSON.stringify(person);

            let personCopy = JSON.parse(personText, function(key, value) {

                if (key === 'releaseData') {

                    return new Date(value);

                } else {

                    return value

                }

            })

            console.log(personCopy.releaseData);

            console.log(personCopy.releaseData.getFullYear());

    结果:Thu Dec 01 2011 00:00:00 GMT+0800 (中国标准时间)

    test.html:28 2011

     

    总结:json是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量.json可以表示对象,数组,数值,字符串,布尔值,null,虽然xml也可以表示,但是json比xml要简单的多

    Processed: 0.010, SQL: 9