JSON 入门

什么是 JSON

JSON 是一种纯字符串形式的数据,是一种开放的、轻量级的数据交换格式,广泛地应用在网络中进行数据传输。

JSON 中只有两种方式表示数据:

  • Object:键值对的集合,用 { } 定义,以 key: value 的形式表示键值对,键值对间用 , 分隔
  • Array:值的有序集合,用 [ ] 定义,值之间用 , 分隔

JSON 文件通常存储在 .json 文件中,实际上就是一种文本文件。

JSON 的用途

在 Web 应用中使用最广泛,许多数据接口都是采用 JSON 格式进行的:

  • 使用 Ajax 异步加载的数据
  • RPC 远程调用的数据
  • 前后端分离,后端返回的数据
  • 一些开放 API 接口,例如百度的一些开放接口

序列化:在真正使用 JSON 时,要面临的一个问题是各种不同的编程语言,其在内存中的对象模型可能是不同的。所以同一个 JSON 数据,在不同的编程语言中,实际上可能是不一样的。所以需要一种机制,能够让 JSON 完成跨语言、跨平台。

序列化是将内存中的对象(变量)转化成 JSON 格式的文件,当其他编程语言或平台需要使用该数据时,就会调用自身语言平台的反序列化功能(某些库),读取 JSON 数据文件至内存,转化成该编程语言所对应的对象模型,才能够真正的使用。

另外 JSON 还可以作为某些程序的配置文件,例如 VScode

JSON 语法

键:以字符串形式定义,需要使用 " 括起来
值:可以是

  • 数字:整数或浮点数
  • 数组:类型可以不一样
  • 对象:键值对的集合
  • 字符串
  • 布尔值
  • null

不同的键值对需要以 , 分开

示例:可以进行各种嵌套

{
    "integer": 1,
    "float": 1.1,
    "string": "Hello World!",
    "bool": true,
    "array": [
        1,
        "string",
        false,
        ["peter", "bob"],
        {"name": "Anna", "age": 16}
    ],
    "object":{
        "name": "Anna",
        "age": 16
    }
}

JSON5

由于官方的 JSON 存在一些限制,使得在实际的使用中并不那么方便,开源社区共同推出了一种非官方的标准 JSON5,也得到了广泛的使用。

JSON 的限制:

  • 键需要用双引号括起来,字符串不能用单引号
  • 不能用八进制、十六进制表示数字
  • 最后一个键值对或值不能有逗号
  • 没有注释
  • 字符串不能换行

JSON5 的功能:

  • 最后一个键值对或值可以添加逗号
  • 字符串可以使用单引号定义,可以换行
  • 可以定义十六进制的数字
  • 数字可以包含前导或后导的小数点,可以添加加、减号来表示正负
  • 可以使用 // 定义单行注释,使用 /* ... */ 定义多行注释

JSON5 示例:相比 JSON 更加清爽一些,当然更重要的是使用起来更方便

{
    integer: 1,
    float: 1.1,
    string: 'Hello World!',
    bool: true,
    array:[
        1,
        'string',
        false,
        ['peter', 'bob'],
        {name: 'Anna', age: 16}
    ],
    object:{
        name: 'Anna',
        age: 16
    }
}
上一篇 下一篇

评论 | 0条评论