JS红宝书读书笔记 — 20.JSON之序列化&解析

20.JSON

20.1.语法
  • JSON的语法可以表示三种类型的值
    • 简单值
    • 对象
    • 数组
20.1.1.简单值
  • 注意JSON字符串不支持单引号,不支持undefined,支持布尔值和null
20.1.2.对象
  • JSON中的对象要求给属性加引号
20.1.3.数组
20.2.解析与序列化
20.2.1.JSON对象
  • JSON.stringify()
    • 把一个JavaScript对象序列化为一个JSON字符串,默认情况下不包括任何空格字符或缩进
    • 值为undefined的任何属性都会被跳过
  • JSON.parse()
20.2.2.序列化选项
  • JSON.stringify()除了接受要序列化的JavaScript对象,还可以接受另外两个参数,第一个参数是过滤器。第二个参数是是否保持缩进的选项

  • Example

    var book = {
    	title: "JS design",
    	authors: [
        "ming", "mei"
      ],
      edition: 3,
      year: 2011
    };
    
    • 过滤器(第二个参数)

      • 参数是数组

        var jsonText = JSON.stringify(book, ["title", "edition"]);
        // 结果
        {"title":"JS design","edition":3}
        
      • 参数是函数

        var jsonText = JSON.stringfy(book, function(key, value) {
          switch(key) {
            case "authors":
              return value.join(",");
            case "year":
              return 5000;
            case "edition":
              return undefined;    // 返回undefined会在结果中删除该属性
            default:
              return value;
          }
        });
        {"title":"JS design","authors":"ming,mei","year":5000}
        
    • 字符串缩进(第三个参数)

      • 控制结果中的缩进和空白符
      • 数字
        • 表示每个级别缩进的空格数
        • 超过10自动转换为10
      • 字符
        • 替换空格成为缩进字符,一般设置为制表符
        • 长度超过10,自动转换为前10个字符
    • toJSON() 方法

      • 可以为任何对象添加 toJSON() 方法,序列化对象时会调用该方法
      • 如果返回 undefined ,此时如果包含它的对象嵌入另一个对象中,会导致它的值变成 null,而如果它是顶级对象,则序列化该对象的结果就是 undefined
  • 序列化的内部顺序

    1. 如果存在 toJSON() 方法而且能通过它获取有效值,则调用该方法。否则返回对象本身
    2. 如果提供了第二个参数,应用这个过滤器
    3. 如果提供了第三个参数,执行相应的序列化
20.2.3.解析选项
  • JSON.parse() 方法也可以接收另一个参数,该参数是一个函数,将在每个键值对上调用
  • 区别于JSON.stringify() 接受的过滤函数,这个函数被称为还原函数( reviver )
  • 如果还原函数返回 undefined ,则表示要从结果中删除相应的键
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值