JSON - 架构

JSON Schema是一种基于JSON格式的规范,用于定义JSON数据的结构.它是根据2011年到期的IETF草案撰写的.JSON Schema :

  • 描述您现有的数据格式.

  • 清晰,人性化和机器可读的文档.

  • 完整的结构验证,对自动化测试很有用.

  • 完成结构验证,验证客户提交的数据.

JSON模式验证库

目前有多种验证器可用于不同的编程语言.目前,最完整和最合规的JSON Schema验证器是JSV.

语言
CWJElement(LGPLv3)
Javajson-schema-validator(LGPLv3)
.NETJson.NET(麻省理工学院)
ActionScript 3Frigga(麻省理工学院)
Haskellaeson-schema(MIT)
PythonJsonschema
Rubyautoparse(ASL 2.0); ruby-jsonschema(麻省理工学院)
PHPphp-json-schema( MIT). json-schema(伯克利)
JavaScript有序(BSD); JSV; JSON-模式;马蒂奇(麻省理工学院);道场; Persevere(修改后的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"]
}

让我们检查一下可以使用的各种重要关键字n此架构 :

Sr.No.关键字&描述
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

a的长度字符串实例定义为其最小字符数.

14

pattern

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

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

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