js红宝石 第二十三章-JSON

JSON是JavaScript对象简谱标准

JSON是JS的严格子集,用JavaScript中的几种模式来表示结构化数据

JSON是一种数据格式

23.1 语法

JSON支持表示三种类型的值:

简单值: 字符串,数值,布尔值,null

对象: 表示为有序键值对

数组: 可以通过索引表示值的有序列表

23.1.1 简单值

JSON必须用双引号

    "Hello World"

23.1.2 对象

JSON中对象的属性名要用双引号包裹,而且没有变量声明

    {
      "name": "zs",
      "age": 29
    }

23.1.3 数组

JSON的数组和JS的数组表达形式一样

23.2 解析和序列化

JSON可以直接被解析为可用的JS对象

23.2.1 JSON对象

stringify() 吧JS序列化为JSON字符串

parse() 吧JSON解析为原生JS值

23.2.2 序列化选项

如果stringify()的第二个参数是个数组,那么只会序列化数组中的属性

    let p = {
      "name": "zs",
      "age": 29
    }

    JSON.stringify(p,["name"])

第二个参数也可以是个函数,接收key和value属性(称为过滤函数)

JSON.stringify(p,(key,value)=>{
      if(key = "name") return 1
      else return 0
    })

第三个参数控制缩进和空格

 JSON.stringify(p,null,4)

有时候需要自定义JSON序列化,使用toJSON()方法

    let book = {
      title: "book",
      author: [
        "NC",
        "MT"
      ],
      edition: 4,
      toJSON: function(){
        return this.title
      }
    }

    console.log(JSON.stringify(book)); //"book"

toJSON方法可以和过滤参数一起使用

23.2.3 解析选项

JSON.parse() 也可以接收一个额外的参数,这个参数是一个函数,会根据每一个键值对都调用一次

称为还原函数

如果还原函数返回undefined,结果中就会删除相应的键

    let book = {
      title: "book",
      author: [
        "NC",
        "MT"
      ],
      edition: 4,
      releaseDate: new Date(2017,11,1)
    }

    let jsonText = JSON.stringify(book)
    let bookCopy = JSON.parse(jsonText,(key,value)=> key === "releaseDate" ? new Date(value) : value)
    console.log(bookCopy.releaseDate.getFullYear());// 2017

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值