JSON——JavaScript程序设计笔记(15)

本文深入探讨了JSON数据结构的使用,包括表示简单值、对象、数组,以及如何通过stringify()和parse()方法进行序列化与解析。介绍了如何在对象中嵌入对象和数组,以及使用过滤器和缩进参数进行自定义序列化。

第20 章 JSON


  1. JSON可以用来表示简单值
  2. JSON用来表示对象
    {
    “name”: “Nicholas”,
    “age”: 29
    }
    对象的属性必须加双引号,这在JSON 中是必需的。属性的值可以是简单值,也可以是复杂类型值,因
    此可以像下面这样在对象中嵌入对象:
    {
    “name”: “Nicholas”,
    “age”: 29,
    “school”: {
    “name”: “Merrimack College”,
    “location”: “North Andover, MA”
    }
    }
  3. JSON用来表示数组
    [25, “hi”, true]
    JSON 数组也没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合

  1. 解析与序列化
    JSON 对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript 对象序列化为JSON 字符串和把JSON 字符串解析为原生JavaScript 值。
    JSON.stringify()除了要序列化的JavaScript 对象外,还可以接收另外两个参数,这两个参数用于指定以不同的方式序列化JavaScript 对象。第一个参数是个过滤器,可以是一个数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON 字符串中保留缩进。
    如果过滤器参数是数组,那么JSON.stringify()的结果中将只包含数组中列出的属性
    过滤器参数还可以是函数
    var book = {
    "title": "Professional JavaScript",
    "authors": [
    "Nicholas C. Zakas"
    ],
    edition: 3,
    year: 2011
    };
    var jsonText = JSON.stringify(book, function(key, value){
    switch(key){
    case "authors":
    return value.join(",")
    case "year":
    return 5000;
    case "edition":
    return undefined;
    default:
    return value;
    }
    });

    函数过滤器根据传入的键来决定结果。如果键为”authors”,就将数组连接为一个字符串;
    如果键为”year”,则将其值设置为5000;如果键为”edition”,通过返回undefined 删除该属性。
    最后,一定要提供default 项,此时返回传入的值,以便其他值都能正常出现在结果中
    缩进参数可以是数值
    也可以是一个字符串,则这个字符串将在JSON 字符串中被用作缩进字符
    有时候,JSON.stringify()还是不能满足对某些对象进行自定义序列化的需求。在这些情况下,
    可以给对象定义toJSON()方法,返回其自身的JSON 数据格式
    假设把一个对象传
    入JSON.stringify(),序列化该对象的顺序如下。
    (1) 如果存在toJSON()方法而且能通过它取得有效的值,则调用该方法。否则,返回对象本身。
    (2) 如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第(1)步返回的值。
    (3) 对第(2)步返回的每个值进行相应的序列化。
    (4) 如果提供了第三个参数,执行相应的格式化。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值