JSON - 架构


JSON Schema 是基于 JSON 的格式规范,用于定义 JSON 数据的结构。它是根据 2011 年到期的 IETF 草案编写的。 JSON Schema -

  • 描述您现有的数据格式。
  • 清晰的、人类和机器可读的文档。
  • 完整的结构验证,对于自动化测试很有用。
  • 完成结构验证,验证客户提交的数据。

JSON 架构验证库

目前有多种可用于不同编程语言的验证器。目前最完整、最合规的 JSON 模式验证器是 JSV。

语言 图书馆
C 万家元素 (LGPLv3)
爪哇 json-schema-validator (LGPLv3)
。网 Json.NET(麻省理工学院)
动作脚本3 弗丽嘉(麻省理工学院)
哈斯克尔 aeson 模式 (MIT)
Python JSON模式
Ruby 自动解析(ASL 2.0);ruby-jsonschema (麻省理工学院)
PHP php-json-schema(麻省理工学院)。json 模式(伯克利)
JavaScript 有序(BSD);JSV;json 模式;马蒂奇(麻省理工学院);道场;坚持(修改版 BSD 或 AFL 2.0);schema.js。

JSON 架构示例

下面给出的是一个基本的 JSON 模式,其中涵盖了经典的产品目录描述 -

{
   "$schema": "http://json-schema.org/draft-04/schema#",
   "title": "Product",
   "description": "A product from Acme's catalog",
   "type": "object",
	
   "properties": {
	
      "id": {
         "description": "The unique identifier for a product",
         "type": "integer"
      },
		
      "name": {
         "description": "Name of the product",
         "type": "string"
      },
		
      "price": {
         "type": "number",
         "minimum": 0,
         "exclusiveMinimum": true
      }
   },
	
   "required": ["id", "name", "price"]
}

让我们检查一下可以在此模式中使用的各种重要关键字 -

先生。 关键字和描述
1

$模式

$schema 关键字表明该模式是根据 v4 规范草案编写的。

2

标题

您将使用它来为您的架构指定标题。

3

描述

架构的一些描述。

4

类型

type 关键字定义了 JSON 数据的第一个约束:它必须是 JSON 对象。

5

特性

定义 JSON 文件中使用的各种键及其值类型、最小值和最大值。

6

必需的

这保留了所需属性的列表。

7

最低限度

这是对该值施加的约束,表示最小可接受值。

8

独家最低

如果“exclusiveMinimum”存在并且布尔值为 true,则如果实例严格大于“minimum”的值,则该实例有效。

9

最大限度

这是对值施加的约束,表示最大可接受值。

10

独家最大

如果“exclusiveMaximum”存在并且布尔值为true,则如果实例严格低于“maximum”的值,则该实例有效。

11

多个

如果实例除以该关键字的值的结果是整数,则数字实例对于“multipleOf”有效。

12

最长长度

字符串实例的长度定义为其字符的最大数量。

13

最小长度

字符串实例的长度定义为其字符的最小数量。

14

图案

如果正则表达式成功匹配字符串实例,则该字符串实例被视为有效。

您可以检查http://json-schema.org以获取可用于定义 JSON 模式的关键字的完整列表。上述模式可用于测试以下 JSON 代码的有效性 -

[
   {
      "id": 2,
      "name": "An ice sculpture",
      "price": 12.50,
   },
	
   {
      "id": 3,
      "name": "A blue mouse",
      "price": 25.50,
   }
]