JSON Schema

XML有XML Schema,有Schema的好处就是可以校验文件是否符合规范,在代码提示上也会有许多好处。JSON Schema用于JSON验证。
如果说JSON是盛放数据的袋子,那么JSON Schema就是盛放袋子的袋子。

一、类型约束关键字

1、 multipleOf

number类型

2、maximum和exclusiveMuximum

maximum为number类型
exclusiveMuximum为boolean类型,表示是否包括maximum

3、minimum和exclusiveMinimum

minimum为number类型
exclusiveMinimum为boolean类型

4、maxLength和minLength

number类型,用来约束字符串类型的长度

5、pattern

string类型,正则表达式约束字符串类型

6、additionalItems和items

这两个关键字用于约束数组。
additionalItems可为boolean或者object类型
items既可以是object类型,也可以是array类型。如果是object类型,表示数组中各个元素类型相同;如果为object类型,表示数组中有多种类型的元素。

7、minItems和maxItems

number类型,用来限制数组的长度

8、uniqueItems

boolean类型,表示是否禁止数组中元素重复

9、maxProperties和minProperties

number类型,用于限制object包含的属性个数

10、required

数组类型,用于约束object类型,表示必须要出现的属性

11、patternProperties

string类型,用于约束object类型,表示所有属性名称必须满足这个正则表达式

12、additionalProperties

可以为boolean类型或者object类型,表示object的其它属性

13、enum

array类型,用来枚举元素的可取值,可以表示任意类型的元素

14、type

string类型,用来表示元素类型,可取值为六种基本数据类型(number,boolean,string,array,object,null)

15、allOf、oneOf、anyOf、not

这四个元素必须是array类型,array中的元素是一系列的schema(schema其实就是object类型)。
对于数组中的约束:

  • allOf要求全部满足
  • not表示全部不满足
  • oneOf表示只满足一个
  • anyOf表示至少满足一个

16、definitions

用来定义类型,从而可以进行引用

  {
       "type": "array",
       "items": { "$ref": "#/definitions/positiveInteger" },
       "definitions": {
           "positiveInteger": {
               "type": "integer",
               "minimum": 0,
               "exclusiveMinimum": true
           }
       }
   }

二、元数据关键字

  • title
  • description
  • default

三、格式关键字

json-schema规范预定义了一系列格式

  • datetime
  • email
  • hostname
  • ipv4
  • ipv6
  • uri
  • uriref

四、不同语言有不同的jsonschema验证库

语言 程序库
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插件推荐

JSONMate
JSONEditor
Treema

参考资料

https://tools.ietf.org/html/draft-wright-json-schema-validation-00
http://json-schema.org

一个强大的json编辑插件treema,此库的作者还开发了一款非常流行的程序员游戏:codecraft
http://codecombat.github.io/treema/

JSON-Schema校验工具
http://json-schema-validator.herokuapp.com/

原文地址:https://www.cnblogs.com/weiyinfu/p/7743399.html