JSON

数据交换格式

1、什么是数据交换格式

  • 数据交换格式,就是服务器端客户端之间进行数据传输与交换的格式
  • 前段领域,经常提及的两种数据交换格式分别是 XMLJSON
    • 其中 XML 用的非常少,所以,我们重点要学习的数据交换格式是 JSON

2、XML

什么是XML

  • XML 的英文全称是 EXtensible Markup Language,即可扩展标记语言
    • 因此,XML 和 HTML 类似,也是一种标记语言。

XML和 HTML的区别

  • XML 和 HTML 虽然都说标记语言,但是,它们两者之间没有任何的关系。
    • HTML 被设计用来描述网页上的内容,是网页内容的载体。
    • XML 被设计用来传输和存储数据,是数据的载体。

XML 的缺点

  • XML 格式臃肿,和数据无关的代码多,体积大,传输效率低。
  • 在JavaScript 中解析 XML 比较麻烦。

3、JSON

什么是JSON

  • 概念:JSON 的英文全称是 JavaScript Object Notation,即 JavaScript 对象表示法
    • 简单来讲,JSON 就是 JavaScript 对象和数组的字符串表示法
    • 它使用文本表示一个 JS 对象或数组的信息,因此,JSON 的本质是字符串
  • 作用:JSON 是一种轻量级的文本数据交换格式,在作用上类似于 XML,专门用于存储和传输数据。
    • 但是JSON 比 XML 更小、更快、更易解析
  • 现状:JSON 是在 2001 年开始被推广和使用的数据格式,到现今为止,JSON 已经成为了主流的数据交换格式

JSON的两种结构

  • JSON 就是用字符串来表示 JavaScript 的对象和数组。
    • 所以,JSON 中包含对象数组两种结构,通过这两种结构的互相嵌套,可以表示各种复杂的数据结构。

1、对象结构

  • 对象结构:对象结构在 JSON 中表示为 {} 括起来的内容。

    • 数据结构为 {key: value,key: value, ...} 的键值对结构。
    • 其中,key必须是使用英文的双引号包裹的字符串,value 的数据类型 可以是数字、字符串、布尔值、null、数组、对象 6种类型
  • // 注:里面所有的值都必须用双引号括起来
    {
        "name": "zs",
        "age": 20,
        "gender": "男",
        "address": null,
        "hobby": ["吃饭","睡觉","打豆豆"]
    }
    

2、数组结构

  • 数组结构:数组结构在JSON 中表示为 [] 括起来的内容。

    • 数据结构为 ["java","javascript",30,true]。
    • 数组中数据结构的类型可以是数字、字符串、布尔值、null、数组、对象、6种类型。
  • ["java","python","php"]
    [100,200,300.5]
    [true, false, null]
    [{"name":"zs", "age":20}, {"mame":"ls", "age":30}]
    [ ["苹果": "榴莲", "椰子"],[4, 50, 5] ]
    

3、JSON语法注意事项

  • 属性名必须使用双引号包裹
  • 字符串类型的值必须使用双引号包裹
  • JSON 中不允许使用单引号表示字符串
  • JSON 中不能写注释
  • JSON 的最外层必须是对象或数组格式
  • 不能使用 undefined 或函数作为 JSON 的值
  • JSON的作用:在计算机与网络之间存储和传输数据。
  • JSON的本质:用字符串来表示 JavaScript 对象数据或数组数据

4、JSON和JS对象的关系

  • JSON 是 JS对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。

    • // 这是一个对象
      let obj = {a: 'hello', b: 'world'}
      
      // 这是一个 JSON 字符串,本质就是一个字符串
      let json = '{"a": "Hello", "b": "World"}'
      

5、JSON和JS对象的转换

  • 要实现从 JSON 字符串转换为 JS 对象,使用 JSON.parse() 方法:

    • let json = `{"name": "码农权","age":20}`;
      console.log(JSON.parse(json));
      // {name: "码农权", age: 20}
      
  • 要实现从 JS对象 转换JSON 字符串,使用JSON.stringify()方法:

    • let obj = {name: "码农权", age: 20};
      console.log(JSON.stringify(obj));
      // '{"name": "码农权","age":20}'
      

6、序列化和反序列化

  • 数据对象 转换为 字符串的过程,叫做序列化,例如:调用 JSON.stringify() 函数的操作,叫做 JSON 序列化。
  • 字符串转换为数据对象的过程,叫做反序列化,例如:调用 JSON.parse() 函数的操作,叫做 JSON 反序列化
posted @ 2022-11-04 11:18  HuangBingQuan  阅读(247)  评论(0编辑  收藏  举报