JSON - 架构
JSON 架构是一种基于 JSON 的格式规范,用于定义 JSON 数据的结构。它是根据 IETF 草案编写的,该草案于 2011 年到期。JSON 架构 −
- 描述您现有的数据格式。
- 清晰、人可读和机器可读的文档。
- 完整的结构验证,可用于自动化测试。
- 完成结构验证,验证客户提交的数据。
JSON 架构验证库
目前有几种验证器可用于不同的编程语言。目前可用的最完整、最合规的 JSON 架构验证器是 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"]
}
让我们检查一下可以在此架构中使用的各种重要关键字 -
关键词 | 描述 |
---|---|
$schema |
$schema 关键字声明此架构是根据草案 v4 规范编写的。 |
title |
您将使用它来为您的架构提供标题。 |
description |
对架构的简要说明。 |
type |
type 关键字定义了 JSON 数据的第一个约束:它必须是一个 JSON 对象。 |
properties |
定义要在 JSON 文件中使用的各种键及其值类型、最小值和最大值。 |
required |
这将保留必需属性的列表。 |
minimum |
这是要对值施加的约束,表示可接受的最小值。 |
exclusiveMinimum |
如果存在 “exclusiveMinimum” 且具有布尔值 true,则当实例严格大于 “minimum” 的值时,该实例有效。 |
maximum |
这是要对值施加的约束,表示最大可接受值。 |
exclusiveMaximum |
如果存在 “exclusiveMaximum” 且布尔值为 true,则当它严格低于 “maximum” 的值时,该实例有效。 |
multipleOf |
如果实例除以此关键字的值的结果是整数,则数字实例对 “multipleOf” 有效。 |
maxLength |
字符串实例的长度定义为其最大字符数。 |
minLength |
字符串实例的长度定义为其最小字符数。 |
pattern |
如果正则表达式成功匹配 string 实例,则认为该实例有效。 |
您可以检查 http://json-schema.org 以获取可用于定义 JSON 架构的关键字的完整列表。上述架构可用于测试以下 JSON 代码的有效性 -
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]