JSON模式



JSON Schema是一种基于JSON的规范,用于定义JSON数据的结构。它是在IETF草案下编写的,该草案于2011年失效。JSON Schema:

  • 描述您现有的数据格式。
  • 清晰、易于理解的文档(人机可读)。
  • 完整的结构验证,可用于自动化测试。
  • 完整的结构验证,用于验证客户端提交的数据。

JSON Schema验证库

目前有几种针对不同编程语言的验证器可用。目前,最完整和最兼容的JSON Schema验证器是JSV。

语言
C WJElement (LGPLv3)
Java json-schema-validator (LGPLv3)
.NET Json.NET (MIT)
ActionScript 3 Frigga (MIT)
Haskell aeson-schema (MIT)
Python Jsonschema
Ruby autoparse (ASL 2.0); ruby-jsonschema (MIT)
PHP php-json-schema (MIT). json-schema (Berkeley)
JavaScript Orderly (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (modified BSD or AFL 2.0); schema.js。

JSON Schema示例

下面是一个基本的JSON模式,它涵盖了经典的产品目录描述:

{
   "$schema": "https://json-schema.fullstack.org.cn/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

$schema关键字指出此模式是根据草案v4规范编写的。

2

title

您将使用此关键字为您的模式命名。

3

description

模式的简短描述。

4

type

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

5

properties

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

6

required

此关键字列出必需的属性。

7

minimum

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

8

exclusiveMinimum

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

9

maximum

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

10

exclusiveMaximum

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

11

multipleOf

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

12

maxLength

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

13

minLength

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

14

pattern

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

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

[
   {
      "id": 2,
      "name": "An ice sculpture",
      "price": 12.50,
   },
	
   {
      "id": 3,
      "name": "A blue mouse",
      "price": 25.50,
   }
]
广告
© . All rights reserved.