JSON Schema

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

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/

免责声明:文章转载自《JSON Schema》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux下叹号!的用法微信小程序如何动态增删class类名下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Android开发者选项——Gpu呈现模式分析

对于Android用户来说,无论你用的什么品牌的手机,在开发者选项中都能发现“玄学曲线”的开关,之所以称其为玄学曲线,还是因为它被很多网友用于测试一个说不清道不明的东西——流畅度。说到玄学曲线其实它的真名叫做“ProfileGPURendering”,在中文安卓系统下译为“GPU显示配置文件”或“GPU呈现模式分析”等,根据不同厂商定制系统叫法稍有不同。...

凤凰系统(Phoenix OS)PC版安装,电脑上体验功能丰富的安卓系统

Tid=9074&fid=12安装前准备下载最新的PhoenixOSIO安装映像,并将其刻录到USB闪存驱动器;如果使用Windows操作系统,建议使用UltraISO刻录。下载地址:http://www.phoenixos.com/download_x86开始安装。1.重新启动机器,从启动选项中选择USB闪存磁盘启动,然后选择“Installati...

excel下划线转驼峰公式

最近,为了避免麻烦,我决定生成jquery的json对象结构。数据表。下划线应变成驼峰,如下所示:=LEFT&MID...

Corn表达式

CronTriggerCronTrigger通常比SimpleTrigger更有用。如果您需要基于日历的概念,而不是SimpleTrigger完全指定的时间间隔,则重复启动工作的时间表。CronTrigger,您可以指定触发器计划,例如“每周五中午”、“每工作日9:30”,甚至“每周一上午、周三和周五9:00和10:00每五分钟”。即使如此,就像Simple...

neo4j修改密码

输入neo4j提供的可视界面,并输入::serverchange密码。键入原始密码和新密码以修改浏览器。在系统数据库(:usesystem)中,执行以下命令ALTERUSERneo4jSETPASSWORD“mynewpass”:;...

docker默认网段和主机网段冲突解决

一、docker默认网卡docker0172.17.0.0可能会与主机冲突,这时候需要修改docker默认分配的网段1、修改/etc/docker/daemon.json文件,加入以下代码{"default-address-pools":[{"base":"172.100.0.0/16","size":24}]}其中上面的172.100.0.0/16是自定义...