Leetcode icon indicating copy to clipboard operation
Leetcode copied to clipboard

【深入理解JS核心技术】4. 什么是 JSON 及其常用操作

Open webVueBlog opened this issue 2 years ago • 0 comments

JSON是一种遵循JavaScript对象语法的基于文本的数据格式,当您想通过网络传输数据时它很有用,它基本只是一个扩展名为.json的文本文件,MIME类型为application/json

JSON语法:

JSON语法支持表示3种类型的值。

  1. 简单值:字符串,数值,布尔值和null可以在JSON中出现,就像在JavaScript中一样。特殊值undefined不可以。
  2. 对象:第一种复杂数据类型,对象表示有序键/值对。每个值可以是简单值,也可以是复杂类型。
  3. 数组:第二种复杂数据类型,数组表示可以通过数值索引访问的值的有序列表。数组的值可以是任意类型,包括简单值,对象,或者其他数组。

解析:将字符串转换为对象

JSON.parse()方法可以接收一个额外的参数,这个函数会针对每个键/值对都调用一次。

JSON.parse(text);

字符串化:将对象转换为字符串,以便可以通过网络传输

JSON.stringify()方法除了要序列化的对象,还可以接收两个参数。这两个参数可以用与指定其他序列化JavaScript对象的方式。第一个参数是过滤器,可以是数组或函数;第二个参数是用于缩进结果JSON字符串的选项。

// 过滤结果
// 如果第二个参数是一个数组,那么JSON.stringify()返回的结果只会包含该数组中列出的对象属性。
// JSON.stringify(book, ['title', 'name']);

// 字符串缩进
// JSON.stringify()方法的第三个参数控制缩进和空格。在这个参数是数值时,表示每一级缩进的空格数。
// JSON.stringify(book, null, 4);

JSON.stringify(object);
let book = {
    title: 'name',
    toJSON: function() {
        return this.title;
    }
}

let jsonText = JSON.stringify(book); // '"name"'

解析与序列化

JSON对象有两个方法:stringify()和parse(),分别将JavaScript序列化为JSON字符串,以及将JSON解析为原生JavaScript值。

JSON是一种轻量级数据格式,可以方便地表示复杂数据结构,这个格式使用JavaScript语法的一个子集表示对象,数组,字符串,数值,布尔值和null。虽然XML也能胜任同样的角色,但JSON更简洁,JavaScript支持也更好。所有浏览器都已经原生支持全局JSON对象。

ES5定义了原生JSON对象,用于将JavaScript对象序列化为JSON字符串,以及将JSON数组解析为JavaScript对象。JSON.stringify()和JSON.parse()方法分别用于实现这两种操作。

未完结!更多内容尽情期待下一节~

【深入理解JS核心技术】欢迎各位观众老爷,求点赞,求关注,求转发~

webVueBlog avatar Apr 30 '22 04:04 webVueBlog