JSON Schema
JSON Schema是一种基于JSON的格式规范,用于定义JSON数据的结构。它是根据IETF草案编写的,该草案于2011年到期。JSON Schema
描述您现有的数据格式。
清晰且人机可读的文档。
完整的结构验证,对自动化测试非常有用。
完成结构验证,验证客户提交的数据。
JSON Schema验证库
目前针对不同的编程语言有几种验证器可用。目前最完整、最符合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 Schema实例
下面给出了一个基本的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,则该实例在严格大于“最小值”时有效。
maximum:这是对该值施加的约束,表示最大可接受值。
exclusiveMaximum:如果存在“exclusiveMaximum”,并且布尔值为true,则该实例在严格低于“最大值”时有效。
multipleOf:如果实例除以此关键字值的结果是整数,则数字实例对“multipleOf”有效
maxLength:字符串实例的长度定义为其最大字符数。
minLength:字符串实例的长度定义为它的最小字符数。
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, } ]