json

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要简单的多

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值