zoukankan      html  css  js  c++  java
  • 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/

  • 相关阅读:
    借用构造函数实现继承
    原型链
    创建对象 之 组合使用构造函数模式和原型模式
    6.原型对象的问题
    Spring MVC
    AOP
    谈谈对Spring IOC的理解
    Mybatis3.x与Spring4.x整合(转)
    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)
    Appweb写法
  • 原文地址:https://www.cnblogs.com/weiyinfu/p/7743399.html
Copyright © 2011-2022 走看看