JSON

JSON

只是一种数据格式
语法的值可以标识为以下三种类型:

  • 简单值 字符串、数值、布尔值、null 不支持undefined
  • 对象
  • 数组
    ####简单值
    JavaScript字符串与 JSON字符串的大区别在于,JSON字符串必须使用双引号(单引号会导致语 法错误)
对象
{      
"name": "Nicholas",   
  "age": 29
  } 

与JS对象字面量相比:

  • 没有声明变量(JSON中没有变量的概念)
  • 没有末尾的分号
  • JSON中对象的属性名任何时候都必须加双引号
数组

JSON数组采用的就是 JavaScript中的数组字面量形式。

[25, "hi", true]

解析与序列化

JSON对象有两个方法:stringify() 和 parse() 分别用来把JS对象序列化为JSON字符串 和 把JSON字符串解析为原生JS的值。

在序列化 JavaScript 对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为 undefined 的任何属性也都会被跳过。结果中终都是值为有效 JSON数据类型的实例属性。

序列化选项

JSON.stringify( )可接受三个参数。

  1. 要序列化的对象
  2. 过滤器。可以是一个数组,也可以是一个函数
  3. 是否在JSON字符串中保留缩进。

(1)数组
如果过滤器参数是数组,那么 JSON.stringify()的结果中将只包含数组中列出的属性
(2)函数
两个参数——属性(键)名 和 属性值。
属性名只能是字符串,而在值并非键 值对儿结构的值时,键名可以是空字符串。
为了改变序列化对象的结果,函数返回的值就是相应键的值。如果函数返回了undefined,那么相应的属性会被忽略。

第三个参数用于控制结果中的缩进和空白符。

  • 如果这个参数是一个数 值,那它表示的是每个级别缩进的空格数。
  • 如果缩进参数是一个字符串而非数值,则这个字符串将在 JSON字符串中被用作缩进字符(不再使 用空格)。

序列化一个对象的顺序:

  • 如果存在toJSON方法且能通过它取得有效的值,则调用该方法。否则,返回对象本身。
  • 如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第(1)步返回的值。
  • 对第(2)步返回的每个值进行相应的序列化。
  • 如果提供了第三个参数,执行相应的格式化。
 var obj = {
            "title": "Javascript",
            "authors": ["Jona"],
            edition: 3,
            year: 2020,
            toJSON:function() {
                return {"title":this.title}
            }
        }
  var jsonText = JSON.stringify(obj, function (key, value) {
            switch (key) {
                case "authors": return value.join(",")

                case "year": return 5000;

                case "title": return "Celia"
                // case "edition": return;

                default: return value;
            }
        },'....')
  console.log(jsonText);

在这里插入图片描述

解析选项

JSON.parse( ) 也可以接收另一个参数,,该参数是一个函数,将在每个键值对儿上调用,又叫还原函数。接收两个参数,一个键和一个值,而且需要返回一 个值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值