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 | The $schema 关键字状态,这种模式被写入草案V4规范。 |
title | 将使用此架构提供一个标题 |
description | 架构的一点描述 |
type | 我们 JSON 数据类型关键字定义的第一个约束条件:它必须是一个JSON对象 |
properties | 定义各个键和它们的值类型,最小和最大值中要使用JSON文件 |
required | 这样可以使所需的属性的列表 |
minimum | 这是约束的值,并代表可接受的最小值 |
exclusiveMinimum | 如果“exclusiveMinimum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的最低限度的值 |
maximum | 这是约束的值被提上表示可接受的最大值 |
exclusiveMaximum | 如果“exclusiveMaximum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的值小于“最大”。 |
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, } ]