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

JSON Schema相关推荐

  1. json schema多种形式_什么是JSON Schema?

    什么是JSON Schema? 如果你曾经使用过XML Schema,RelaxNG或ASN.1,那么你很可能已经知道什么是JSON Schema,并且可以跳过本文的阅读.如果你是头一次听说,或者听过 ...

  2. laravel 验证器怎么验证json对象_Postman使用tv4进行JSON Schema结构验证和断言

    JSON Scheme简介 对于JSON格式的请求数据或者响应数据,在不同的数据和场景下往往会有一部分动态的值及字段.此时我们可以使用JSON Scheme Validator(JSON结构验证)来验 ...

  3. rest-assured之Schema validation(包括JSON Schema validation及Xml Schema validation)

    rest-assured从2.1.0版本开始支持  Schema 验证,包括JSON Schema validation及Xml Schema validation.我们之前断言响应体都是一个一个字段 ...

  4. json schema多种形式_什么是JSON Schema?及其应用方式......

    如果你曾经使用过XML Schema,RelaxNG或ASN.1,那么你很可能已经知道什么是JSON Schema,并且可以跳过本文的阅读.如果你是头一次听说,或者听过过这个词汇但不了解,那么你来对地 ...

  5. json schema如何约束为小数_如何使用jsonschema进行接口响应断言

    一,JSONSchema的概念 JSONSchema是一种用来描述JSON数据的一种JSON数据结构.JSON Schema也有版本,目前的版本有 Draft 7,Draft 6,Draft 4 和D ...

  6. Json Schema快速入门

    Json Schema快速入门 JSON 模式是一种基于 JSON 格式定义 JSON 数据结构的规范.它被写在 IETF 草案下并于 2011 年到期.JSON 模式: 描述现有数据格式. 干净的人 ...

  7. Json Schema的使用

    直接上案例: 在Web Api通讯中,客户端发送json数据,服务端反序列化json(json与某个类形成对应关系),在某些情况下,需要校验其上传的json是否合法. 服务端是使用Json.net(n ...

  8. 3 分钟了解 JSON Schema

    大家好,我不是鱼皮. 幸运又不幸,我是一名程序员,他也是一名程序员. 周末,我在开发网站,他在开发游戏,两个人一起写代码,一起写 Bug 头秃,竟也有了一丝别样的浪漫,好不自在! 今天,他遇到了一个后 ...

  9. 如何快速写出Json Schema,校验Json Schema

    本文首发于微信公众号: [软测小生] 得到一个Json文件,如何快速的去测试呢? 难道是一个个节点的去验证吗?那显然效率太低了. 一般推荐使用Json Schema(一种Json的数据结构定义)去校验 ...

最新文章

  1. SAP QM中阶执行事务代码QDB1,报错- Inspection severity 001 AQL 0.650 not in sampling schema A01-
  2. 算法--微软面试题:求一个整数数组元素间最小差值
  3. SNAT和DNAT的区别
  4. Android中ImageView的scaleType 属性说明。
  5. 工作87:element-ui el-table sortable属性 参数详解
  6. Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析【转】...
  7. JAVA-Lambda表达式
  8. gcn在图像上的应用_使用图卷积网络(GCN)做图像分割
  9. java api接口签名验证失败_cryptapi结合java进行数字签名与验证签名的困惑
  10. android5.1 PowerManagerService和DisplayPowerControler、DisplayPowerState关系
  11. 系统动力学建模代做,vensim建模代做,流图建模,不确定分析。
  12. 灵悟礼品网上专卖店——新建数据库
  13. JFlow:真心服务中国IT产业
  14. 阿里云服务器被恶意程序攻击
  15. Java自定义类的属性、方法结合数组简单使用
  16. 手机扫描二维码登录原理
  17. 前端技巧培训-后台战友快速入门
  18. HAL库STM32CuBe实现按键扫描芯片STM32F407
  19. 安卓Trustzone有巨大漏洞?降级攻击为你做出解析!
  20. 瞬间几千次的重复提交,我用 SpringBoot+Redis 扛住了

热门文章

  1. PMP第五版第一次考试相关提醒
  2. 如何准确的判断一个数据的类型
  3. 解决Ajax中IE浏览器缓存问题
  4. javascript之Bom简介
  5. 【微软黑科技一周概览】
  6. HDU 5680 zxa and set 水题
  7. 【Java从0到架构师】SpringMVC - 返回值
  8. jQuery form表单的serialize()参数和其他参数 如何一起传给后端
  9. DBSCAN聚类算法初探(五)
  10. 30岁的你收入是多少?用数据可视化,看看大家的30岁工资真相