JSON Schema是一种基于JSON格式的规范,用于定义JSON数据的结构.它是根据2011年到期的IETF草案撰写的.JSON Schema :
描述您现有的数据格式.
清晰,人性化和机器可读的文档.
完整的结构验证,对自动化测试很有用.
完成结构验证,验证客户提交的数据.
JSON模式验证库
目前有多种验证器可用于不同的编程语言.目前,最完整和最合规的JSON Schema验证器是JSV.
语言 | 库 |
---|---|
C | WJElement(LGPLv3) |
Java | json-schema-validator(LGPLv3) |
.NET | Json.NET(麻省理工学院) |
ActionScript 3 | Frigga(麻省理工学院) |
Haskell | aeson-schema(MIT) |
Python | Jsonschema |
Ruby | autoparse(ASL 2.0); ruby-jsonschema(麻省理工学院) |
PHP | php-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, }]