JSON - Schema
JSON Schema是基于JSON的格式的规范,用于定义JSON数据的结构。 它是根据2011年到期的IETF草案撰写的.JSON Schema -
- 描述您现有的数据格式。
- 清晰,人性化和机器可读的文档。
- 完整的结构验证,对自动化测试很有用。
- 完成结构验证,验证客户提交的数据。
JSON模式验证库
目前有几种验证器可用于不同的编程语言。 目前,最完整和最合规的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(麻省理工学院) |
PHP | php-json-schema(MIT)。 json-schema(伯克利) |
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"]
}
让我们检查一下可以在这个模式中使用的各种重要关键字 -
S.号 | 关键字和说明 |
---|---|
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 如果正则表达式与实例成功匹配,则认为字符串实例有效。 |
您可以在http://json-schema.org查看可用于定义JSON模式的关键字的完整列表。 上述模式可用于测试以下JSON代码的有效性 -
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]