什么是 JSON

JSON 在前端日常开发中再熟悉不过,往往我们和后端的数据交互都是通过 JSON 来进行传输的。那么具体什么是 JSON 呢?

JSON(JavaScript Object Notation, JS 对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的 js 规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

简单来说就是:

什么是 JSON Schema

JSON Schema,从字面我们就可以知道,它和 JSON 有紧密的关系。那么具体是什么呢?

JSON Schemais a vocabulary that allows you toannotateandvalidateJSON documents.

JSON Schema 可以称为 JSON 模式,是一个提议的 IETF 标准,它可以用来描述和校验你的 JSON 数据。JSON Schema 定义了一套词汇和规则json字符串转数组,这套词汇和规则用来定义 JSON 元数据,且元数据也是通过 JSON 数据形式表达的。JSON 元数据定义了 JSON 数据需要满足的规范,规范包括成员、结构、类型、约束等。我们可以通过它来校验我们的 JSON 数据是否有效,是否满足规范。它的作用有些类似于 TypeScript 之于 JavaScript。它的主要作用:

JSON Schema 示例

假定我们现在有一个 JSON 数据:

{
  "productId": 1,
  "productName""A green door",
  "price": 12.50,
  "tags": [ "home""green" ]
}

我们来对应声明一个 JSON Schema 如下:

{
  "$schema""https://json-schema.org/draft/2020-12/schema",
  "$id""https://example.com/product.schema.json",
  "title""Product",
  "description""A product",
  "type""object",
  "properties": {
    "productId": {
      "description""The unique identifier for a product",
      "type""integer"
    },
    "productName": {
      "description""Name of the product",
      "type""string"
    },
    "price": {
      "description""The price of the product",
      "type""number",
      "exclusiveMinimum": 0
    },
    "tags": {
      "description""Tags for the product",
      "type""array",
      "items": {
        "type""string"
      },
      "minItems": 1,
      "uniqueItems"true
    }
  },
  "required": [ "productId""productName""price" ]
}

JSON Schema 关键字

先让我们来看下开头的几个关键字:

上面几个关键字是针对 Schema 的一些设置和注释,针对对应的 JSON 数据中每个字段的描述,都在 properties 中,具体每种格式的字段相关的描述,我们稍后具体说明。让我们先看下最后一个关键字 required,它用来描述 JSON 数据中哪些字段是必须的,对应的值必须是数组格式。比如我们在更新文章时,提交的字段中文章 id 会是必须的;上面 JSON 数据中 productId 是必须的。下面让我们具体看下 JSON 数据中不同类型的字段对应的描述关键字都有哪些。JSON 数据中每个字段的描述都对应一个 type,type 对应的基本类型主要包括:

类型描述

string

字符串型,双引号包裹的 Unicode 字符和反斜杠转义字符

number

数字型,包括整型(int)和浮点数型(float)

boolean

布尔型json字符串转数组,true 或 false

object

对象型,无序的键:值对集合

array

数组型,有序的值序列

null

空型

其中,针对类型 string、number、array 和 object 有一些相关的关键字:

小结

本次我们主要是初步了解了 JSON Schema 和 JSON 的关系,以及 JSON Schema 的一些基础内容。JSON Schema 的构成主要依托于一些关键字,以此来确定一个 JSON 的数据结构描述。看到这里,可能我们还没有体会到它的作用,我们会在后续具体来看一下它是如何发挥作用,在哪些场景下为我们提供便利的,敬请期待。

内容收录于github 仓库

参考:

1.JSON Schema 入门

2.JSON Schema Reference

3.在线 JSON 转 JSON Schema

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688