JSON - Schema
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 模式示例
下面给出了一个基本的 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"] }
让我们检查一下此架构中可以使用的各种重要关键字 −
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,则该实例在严格小于"最大值"。 |
11 |
multipleOf 如果数值实例除以此关键字的值的结果为整数,则该数值实例对"multipleOf"有效。 |
12 |
maxLength 字符串实例的长度定义为其字符的最大数量。 |
13 |
minLength 字符串实例的长度定义为其字符的最小数量。 |
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, } ]