新浦京81707con > 功能介绍 > 新莆京娱乐场校验实例,基本概念

原标题:新莆京娱乐场校验实例,基本概念

浏览次数:177 时间:2019-05-02

  • [1]: TMS 为天猫商城内部运转移动系统。

    1 赞 2 收藏 评论

新莆京娱乐场 1

一. JSON Schema关键字简要介绍

上篇文章中,我们经过三个粗略的JSON Schema的例子,简要地介绍了JSON Schema中时常利用的严重性字,并介绍了有的在线补助工具。一般的话,了解了那个知识点就能够回答相比较宽泛的必要处境了,可是,假设您供给越来越多的定制化必要以及更深远的底细校验的话,那么,我们就必要越来越询问更加多种要字的用法和使用境况。

本文相关代码,请看这里

type 关键字

从而,我们须要运用 type 关键字,将 JSON Schema 限制为特定的数据类型。比方上面那么些 JSON Schema 描述,唯有字符串类型的数额,技术八面驶风通过校验:

JavaScript

{ "type": "string" }

1
{ "type": "string" }

能够校验通过:

JavaScript

"小编是三个字符串"

1
"我是一个字符串"

不知所措校验通过:

JavaScript

250

1
250

type 关键字也取值为其余数据类型,比方 objectarray 等,当 typeobject 类型时,properties 关键字是必需的,当 typearray 类型时,items 关键字是不可或缺的。

于此同时,objectarray 类型的引进使得数据结构能够支撑Infiniti级嵌套,也就突破了小编们在引子中涉嫌的,标签函数描述过于扁平的主题材料。

二.叁.1 type常见取值

那么,type又有怎么样取值呢?当type取值为string类型的时候,是不是还足以加多任何部万分加限制标准吧?我们接下去会依据type的不等取值一丢丢剖析涉及到的关键字含义及用法。首先,大家来看一下,type常见的取值。具体如下:

type取值 对应的Java数据类型
object java.lang.Object
array java.util.List
integer int(java.lang.Integer)
number float(java.lang.Float)或int
null null
boolean java.lang.Boolean
string java.lang.String

在上表中,大家利用了和Java数据类型相比分析的格局提交了type的宽泛取值,接下去,大家会分析当type为不一致取值时,或许涉嫌的显要字含义和用法。

JSON Schema第3方工具

JSON Schema已经有两种语言落成的第二方工具得以应用,详见官方网址证实:http://json-schema.org/implementations。上边二个是java的有关兑现:

json-schema-validator supports draft 4 includes draft-04 hype-schema syntax support (LGPLv3)
json-schema (implementation based on the org.json API) supports draft 4, draft 6 (Apache License 2.0)
json-schema-validator supports draft 4 (Apache License 2.0)

什么是 Schema?

当大家在讲述 文字链接 的时候,必要预约数据的团体措施,比方,需求了解有哪些字段,那个字段的取值怎么着表示等,那就是JSON Schema 的根源。

我们以 文字链接 为例,它对应的 JSON Schema 大约如此:

JavaScript

{ "type": "object", "properties": { "text": { "type": "string", "title": "文字" }, "href": { "type": "string", "title": "链接地址(UEvoqueL)" } } }

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"type": "object",
"properties": {
"text": {
"type": "string",
"title": "文字"
},
"href": {
"type": "string",
"title": "链接地址(URL)"
}
}
}

JSON Schema 概念了哪些依照 JSON 格式描述 JSON 数据结构的职业,进而提供数据校验、文书档案生成和接口数据交互调控等1各个才干。它的特征和用途,可以大要总结为以下几点:

3. JSON Schema比较复杂的言传身教:

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "book info", "description": "some information about book", "type": "object", "properties": { "id": { "description": "The unique identifier for a book", "type": "integer", "minimum": 1 }, "name": { "type": "string", "pattern": "^#([0-9a-fA-F]{6}$", "maxLength": 6, "minLength": 6 }, "price": { "type": "number", "multipleOf": 0.5, "maximum": 12.5, "exclusiveMaximum": true, "minimum": 2.5, "exclusiveMinimum": true }, "tags": { "type": "array", "items": [ { "type": "string", "minLength": 5 }, { "type": "number", "minimum": 10 } ], "additionalItems": { "type": "string", "minLength": 2 }, "minItems": 1, "maxItems": 5, "uniqueItems": true } }, "minProperties": 1, "maxProperties": 5, "required": [ "id", "name", "price" ]}

留神,以上JSON Schema只是为了呈现部分主要字的用法,恐怕和骨子里使用略有不一致。

官方的参考文书档案如下:

利用第2方工具json-schema-validator

上面采纳上述三个工具中的第叁个,实现用schema验证json数据的魔法:
一.首先在pom里,增加如下配置:

                <!-- fge -->
        <dependency>
            <groupId>com.github.fge</groupId>
            <artifactId>json-schema-validator</artifactId>
            <version>2.2.6</version>
        </dependency>
        <!-- fasterxml -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.8.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.8.8</version>
        </dependency>

贰.编纂工具类JsonSchemaValidator.java

public class JsonSchemaValidator {
    public static Map<String, Object> validateJsonByFgeByJsonNode(JsonNode jsonNode, JsonNode schemaNode) {
        Map<String, Object> result = new HashMap<String, Object>();
        ProcessingReport report = null;
        report = JsonSchemaFactory.byDefault().getValidator().validateUnchecked(schemaNode, jsonNode);
        if (report.isSuccess()) {
            // 校验成功
            result.put("message", "校验成功!");
            result.put("success", true);
            return result;
        } else {
            System.out.println("校验失败!");
            Iterator<ProcessingMessage> it = report.iterator();
            String ms = "";
            while (it.hasNext()) {
                ProcessingMessage pm = it.next();
                if (!LogLevel.WARNING.equals(pm.getLogLevel())) {
                    ms  = pm;
                }

            }
            result.put("message", "校验失败!"   ms);
            result.put("success", false);
            return result;
        }
    }

    public static JsonNode getJsonNodeFromString(String jsonStr) {
        JsonNode jsonNode = null;
        try {
            jsonNode = JsonLoader.fromString(jsonStr);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonNode;
    }

    public static JsonNode getJsonNodeFromFile(String filePath) {
        JsonNode jsonNode = null;
        try {
            jsonNode = new JsonNodeReader().fromReader(new FileReader(filePath));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return jsonNode;
    }

}

3.吸收页面数据、读取文件数量的JsonSchemaController

@RestController
public class JsonSchemaController {

    @Value("${upload.rootPath}")
    private String rootPath;


    @RequestMapping(value = "/json-schema/validate", method = RequestMethod.GET)
    public Map<String, Object> jsonSchemaValidate(String jsonStr) {
        Map<String, Object> result = new HashMap<String, Object>();

        JsonNode jsonNode = JsonSchemaValidator.getJsonNodeFromString(jsonStr);
        if (jsonNode == null) {
            result.put("success", false);
            result.put("message", "json报文格式错误");
            return result;
        }

        String filePath =  rootPath   "/json-file/json_schema_test.json";
        JsonNode schemaNode = JsonSchemaValidator.getJsonNodeFromFile(filePath);
        if (schemaNode == null) {
            result.put("success", false);
            result.put("message", "json Schema文件不存在,无法校验!");
            return result;
        }
        return JsonSchemaValidator.validateJsonByFgeByJsonNode(jsonNode, schemaNode);
    }

}

叁.前端页面json_schema.html

<body class=" ">
    <div>
        <textarea class=" " name="parameterContentLeft" id="parameterContentLeft" placeholder="请输入请求报文内容"></textarea>
    </div>
    <br>
    <button onclick="setAjaxRequest();" id="doJson" class=" ">发送</button>
    <div class=" ">
        <pre id="responsePre">

        </pre>
    </div>
    <script src="frame/jquery.min.js"></script>
    <script>
        function setAjaxRequest() {
            $.ajax({
                url : "/json-schema/validate",
                type : "GET",
                data : {
                    jsonStr : $("#parameterContentLeft").val()
                },
                async : false
            }).done(function(data) {
                $("#responsePre").html(data.message);
            });
        }
    </script>
</body>

一. 用于描述数据结构

在叙述 JSON 数据时,假若数额自己的复杂度极高,高到三个维度4维,普通的竹签函数已经黔驴技穷表示这种层级结构了,而 JSON Schema 利用 objectarray 字段类型的反复嵌套,可以规避掉那么些毛病。

自然,除了键值等着力音讯,标准范围还提供了丰裕的关键词扶助,借使想经过自定义扩充字段,化解特定情景的作业须求,也是分外有益的。

二.三.2 从type的例外取值谈起

当type取值为object时,涉及的首要字:properties、required、minProperties、maxProperties、propertyNames、dependencies、patternProperties、additionalProperties

  • properties

该重大字的值是三个目的。

用以钦定JSON对象中的各类差别key应该满意的校验逻辑,如若待校验JSON对象中全部值都能够透过该重大字值中定义的附和key的校验逻辑,每一种key对应的值,皆以一个JSON Schema,则待校验JSON对象通过校验。从那边,我们得以观望,只要待校验JSON对象的全数key分别都由此相应的JSON Schema的校查验质量量评定,那一个目标才好不轻巧通过校验。

除此以外,必要注意的是,省略该重大字和该重大字的值为空对象,具备同样作用。比方:

"properties": { "id": { "description": "The unique identifier for a book", "type": "integer", "minimum": 1 }, "price": { "type": "number", "minimum": 0, "exclusiveMinimum": true } }
  • required

该重大字的值是一个数组,而数组中的成分必须是字符串,而且必须是独占鳌头的。

该重大字限制了JSON对象中务必带有哪些一流key。假若一个JSON对象中包蕴required关键字所钦点的有所一级key,则该JSON对象能够通过校验。

别的,须求留意的是,省略该重大字和该重大字的值为空数组,具有一样效果。比如:

"required": [ "id", "name", "price" ]
  • minProperties、maxProperties

那四个主要字的值都是非负整数。

内定了待校验JSON对象中超级key的个数限制,minProperties钦定了待校验JSON对象足以承受的足足一流key的个数,而maxProperties钦命了待校验JSON对象尚可的最多超级key的个数。

别的,供给小心的是,省略minProperties关键字和该重大字的值为0,具备同等功能。而,借使轻便maxProperties关键字则意味对一级key的最大个数未有限定。比如,即使限制二个JSON对象的一级key的最大个数为五,最小个数为一,则JSON Schema如下:

"minProperties": 1,"maxProperties": 5
  • propertyNames

注意:该重大字,官方表达中帮忙,可是,有希望您选用的阳台仍旧第二方工具不辅助啊。所以,使用需谨慎。

该重大字的值是1个一蹴而就的JSON Schema。

借使待校验JSON对象中的各类超级key都能由此该重大字钦赐的JSON Schema的校验,那么才以为待校验的JSON对象通过校验。注意,待校验JSON对象的一流key皆以string类型。

除此以外,必要注意的是,省略该重大字和该重大字的值为空JSON Schema,具备同样效果。

  • patternProperties

该重大字的值是二个JSON对象,该JSON对象的每2个一流key都以二个正则表明式,value都以3个JSON Schema。

唯有待校验JSON对象中的超级key,通过与之协作的patternProperties中的一流正则说明式,对应的JSON Schema的校验,才算通过校验。举个例子,假若patternProperties对应的值如下:

"patternProperties": { "^a": { "type": "number" }, "^b": { "type": "string" }}

地点的JSON Schema代表,待校验JSON对象中,全体以a伊始的一级key的value都必须是number,全数以b早先的超级key的value都不可能不是string。

  • additionalProperties

该重大字的值是二个JSON Schema。

纵然待校验JSON对象中设有,既未有在properties中被定义,又尚未在patternProperties中被定义,那么这一个拔尖key必须经过additionalProperties的校验。

  • dependencies

待定。。。

  • 全部示例:
{ "type": "object", "properties": { "id": { "description": "The unique identifier for a book", "type": "integer", "minimum": 1 }, "price": { "type": "number", "minimum": 0, "exclusiveMinimum": true } }, "patternProperties": { "^a": { "type": "number" }, "^b": { "type": "string" } }, "additionalProperties": { "type": "number" }, "minProperties": 1, "maxProperties": 5, "required": [ "id", "name", "price" ]}

当type取值为array时,涉及的要紧字:items、additionalItems、minItems、maxItems、uniqueItems、contains

  • items

该重大字的值是3个实用的JSON Schema可能壹组有效的JSON Schema。

当该重大字的值是3个卓有功效的JSON Schema时,只有待校验JSON数组中的所有因素均经过校验,整个数组才算通过校验。举个例子,假若items关键字的有血有肉定义如下:

{ "type": "array", "items": { "type": "string", "minLength": 5 }}

上边的JSON Schema的情趣是,待校验JSON数组的要素都以string类型,且最小可接受长度是5。那么下边这几个JSON数组显然是符合须要的,具体内容如下:

["myhome", "green"]

那么上边那几个JSON数据则是不符合须求,因为第3个成分的长短小于5,具体内容如下:

["home", "green"]

当该重大字的值是一组有效的JSON Schema时,唯有待校验JSON数组的全数因素通过items的值中对应地方上的JSON Schema的校验,那么,整个待校验JSON数组才算通过校验。

此间必要专注的是,假若items定义的有用的JSON Schema的数额和待校验JSON数组桐月素的多少分裂等,那么将要接纳“取小尺码”。即,假诺items定义了二个JSON Schema,不过待校验JSON数组唯有3个因素,那时,只要待校验JSON数组的前多个要素能够分别通过items中的前五个JSON Schema的校验,那么,大家以为待校验JSON数组通过了校验。而,即便待校验JSON数组有四个要素,那时,只要待校验JSON数组的前七个成分能够由此items中对应的JSON Schema的校验,大家就认为待校验JSON数组通过了校验。

比方,如若items的值如下:

{ "type": "array", "items": [ { "type": "string", "minLength": 5 }, { "type": "number", "minimum": 10 }, { "type": "string" } ]}

上边的JSON Schema提出了待校验JSON数组应该满足的口径,数组的率先个成分是string类型,且最小可接受长度为5,数组的第四个因素是number类型,最小可接受的值为十,数组的第伍个要素是string类型。那么上面这五个JSON数组分明是符合供给的,具体内容如下:

["green", 10, "good"]

["helloworld", 11]

下面那四个JSON数组却是不符合供给的,具体内容如下:

["green", 9, "good"]

["good", 12]
  • additionalItems

该重大字的值是一个使得的JSON Schema。

内需专注的是,该重大字只有在items关键字的值为壹组有效的JSON Schema的时候,才得以应用,用于规定赶上items中JSON Schema总的数量量之外的待校验JSON数组中的剩余的因素应该满意的校验逻辑。当然了,唯有这一个剩余的享有因素都知足additionalItems的渴求时,待校验JSON数组才算通过校验。

实际,你能够这样领会,当items的值为一组有效的JOSN Schema的时候,一般能够和additionalItems关键字组合使用,items用于规定对应地点上应该满足的校验逻辑,而additionalItems用于规定高出items校验范围的享有剩余成分应该知足的原则。固然两者同时设有,那么只有待校验JSON数组同时通过双方的校验,才算真正地经过校验。

其它,供给留意的是,假若items只是一个管用的JSON Schema,那么就不可能利用additionalItems,原因也非常粗大略,因为items为3个使得的JSON Schema的时候,其规定了待校验JSON数组全体因素应该满足的校验逻辑。additionalItems已经远非用武之地了。

最终,一样重申一下,省略该重大字和该重大字的值为空JSON Schema,具备同样效果。

比如三个additionalItems的值如下:

{ "type": "array", "items": [ { "type": "string", "minLength": 5 }, { "type": "number", "minimum": 10 } ], "additionalItems": { "type": "string", "minLength": 2 }}

上边的JSON Schema的情致是,待校验JSON数组第贰个要素是string类型,且可接受的最短长度为四个字符,第四个成分是number类型,且可承受的最小值为十,剩余的此外因素是string类型,且可接受的最短长度为二。那么,上边多个JSON数组是能力所能达到由此校验的,具体内容如下:

["green", 10, "good"]

["green", 11]

["green", 10, "good", "ok"]

下边JSON数组是力不从心透过校验的,具体内容如下:

["green", 10, "a"]

["green", 10, "ok", 2]
  • minItems、maxItems

那三个着重字的值都是非负整数。

钦赐了待校验JSON数组中成分的个数限制,minItems钦点了待校验JSON数组能够承受的最少成分个数,而maxItems钦点了待校验JSON数组尚可的最多因素个数。

除此以外,须求小心的是,省略minItems关键字和该重大字的值为0,具有一样效果。而,即使简单maxItems关键字则代表对元素的最大个数未有限定。比方,假如界定一个JSON数组的要素的最大个数为5,最小个数为壹,则JSON Schema如下:

"minItems": 1,"maxItems": 5
  • uniqueItems

该重大字的值是二个布尔值,即boolean(true、false)。

当该重大字的值为true时,惟有待校验JSON数组中的全体因素都具有唯壹性时,工夫通过校验。当该重大字的值为false时,任何待校验JSON数组都能经过校验。

其它,须要留意的是,省略该重大字和该重大字的值为false时,具有一样的功力。比如:

"uniqueItems": true
  • contains

在意:该重大字,官方表达中帮忙,可是,有望你选拔的阳台仍旧第3方工具不协助啊。所以,使用需谨慎。

该重大字的值是3个灵光的JSON Schema。

除非待校验JSON数组中最少有叁个要素能够透过该重大字钦点的JSON Schema的校验,整个数组才算通过校验。

除此以外,必要留意的是,省略该重大字和该重大字的值为空JSON Schema拥有同样成效。

  • 总体示例:
{ "type": "array", "items": [ { "type": "string", "minLength": 5 }, { "type": "number", "minimum": 10 } ], "additionalItems": { "type": "string", "minLength": 2 }, "minItems": 1, "maxItems": 5, "uniqueItems": true}

当type取值为integer或number时,涉及的首要字:multipleOf、maximum、exclusive马克西姆um、minimum、exclusive迷你mum

笔者们先是来回想一下integer和number的界别,integer相当于Java中的int类型,而number约等于Java中的int或float类型。

  • multipleOf

该重大字的值是多个大于0的number,即能够是大于0的int,也得以是大于0的float。

只有待校验的值能够被该重大字的值整除,才算通过校验。

只要含有该重大字的JSON Schema如下:

{ "type": "integer", "multipleOf": 2}

这正是说,二、四、陆都是能够通过校验的,可是,三、五、七都以心有余而力不足透过校验的,当然了,2.0、4.0也是无力回天通过校验的,但是,并不是因为multipleOf关键字,而是因为type关键字。

倘诺带有multipleOf关键字的JSON Schema如下:

{ "type": "number", "multipleOf": 2.0}

那正是说,二、2.0、4、四.0都是能够通过校验的,可是,三、三.0、叁、3.0都是力不从心通过校验的。

除此以外,要求小心的是,省略该重大字则不看待校验数值进行该项校验。

  • maximum

该重大字的值是3个number,即能够是int,也得以是float。

该重大字规定了待校验成分能够经过校验的最大值。

省略该重大字,即意味着对待校验成分的最大值不须求。

  • exclusiveMaximum

该重大字的值是三个boolean。

该重大字平日和maximum一同使用,当该重大字的值为true时,表示待校验元素必须低于maximum指定的值;当该重大字的值为false时,表示待校验成分得以低于或许等于maximum钦点的值。

须要专注的是,省略该重大字和该重大字的值为false,具备同等效果。比方:

{ "type": "number", "maximum": 12.3, "exclusiveMaximum": true}
  • minimum、exclusiveMinimum

minimum、exclusiveMinimum关键字的用法和含义与maximum、exclusive马克西姆um相似。唯壹的分别在于,一个羁绊了待校验成分的纤维值,贰个封锁了待校验成分的最大值。这里就不进行解释了。

  • 完全示例:
{ "type": "number", "multipleOf": 0.5, "maximum": 12.5, "exclusiveMaximum": true, "minimum": 2.5, "exclusiveMinimum": true}

当type取值为string时,涉及的根本字:maxLength、minLength、pattern、format

  • maxLength

该重大字的值是叁个非负整数。

该重大字规定了待校验JSON元素能够通过校验的最大尺寸,即待校验JSON成分的最大尺寸必须低于可能等于该重大字的值。

其余,需求留意的是,如若省略该重大字则象征对待校验成分的最大尺寸未有界定。

  • minLength

该重大字的值是叁个非负整数。

该重大字规定了待校验JSON成分可以经过校验的极小长度,即待校验JSON成分的微小长度必须大于恐怕等于该重大字的值。

其余,需求小心的是,假如省略该重大字和该重大字的值为0,具备同样功效。

  • pattern

该重大字的值是贰个正则表明式。

只有待校验JSON成分符合该重大字钦点的正则表达式,才算通过校验。

  • format

该重大字的值只好是以下取值:

date-time、email、hostname、ipv4、ipv6、uri、uri-reference、uri-template、json-pointer。

若果待校验的JSON成分正好是一个邮箱地址,那么,大家就足以行使format关键字打开校验,而毋庸经过pattern关键字内定复杂的正则表明式实行校验。比方:

{ "type": "string", "format": "email"}
  • 总体示例:
{ "type": "string", "pattern": "^#([0-9a-fA-F]{6}$", "maxLength": 6, "minLength": 6}

全类型可用,即不局限于有个别type,涉及的要害字:enum、const、allOf、anyOf、oneOf、not、default

  • enum

该重大字的值是四个数组,该数组至少要有一个要素,且数组内的每一个成分都以唯一的。

若果待校验的JSON成分和数组中的某2个因素一样,则通过校验。不然,不可能透过校验。

在意,该数组中的成分值能够是别的值,包蕴null。省略该重大字则表示并非对待校验成分进行该项校验。比如:

{ "type": "number", "enum": [2, 3, null, "hello"]}
  • const

该重大字的值能够是别的值,包括null。

比如待校验的JSON成分的值和该重大字钦命的值一样,则经过校验。不然,不也许通过校验。

省略该重大字则代表不要对待校验成分进行该项校验。

在意,该重大字部分第二方工具,并不匡助。

  • allOf

该重大字的值是一个非空数组,数组里面的各个成分都不可能不是三个实惠的JSON Schema。

唯有待校验JSON成分通过数组中兼有的JSON Schema校验,才算真的通过校验。

  • anyOf

该重大字的值是一个非空数组,数组里面包车型地铁每一个成分都不可能不是三个使得的JSON Schema。

借使待校验JSON成分能够透过数组中的任何2个JSON Schema校验,即使通过校验。

  • oneOf

该重大字的值是3个非空数组,数组里面包车型客车各个成分都必须是2个卓有功能的JSON Schema。

举个例子待校验JSON元素能且只好通过数组中的某一个JSON Schema校验,才算真的通过校验。无法透过别的多个校验和能透过几个及以上的校验,都不算真的通过校验。

  • not

该重大字的值是1个JSON Schema。

只有待校验JSON成分不能够透过该重大字钦命的JSON Schema校验的时候,待校验成分才算通过校验。

  • default

该重大字的值是不曾别的要求的。

该重大字平时用来钦命待校验JSON元素的默许值,当然,那一个暗中同意值最佳是符合须求的,即能够由此相应的JSON Schema的校验。

除此以外,供给小心的是,该重大字除了提醒意义外,并不会发生其余实质性的熏陶。

再说type关键字

内需尤其注意的是,type关键字的值能够是2个string,也足以是多个数组。

假设type的值是一个string,则其值只好是以下二种:null、boolean、object、array、number、string、integer。

只要type的值是一个数组,则数组中的成分都必须是string,且其取值依然被限制为上述二种。只要带校验JSON成分是中间的1种,则经过校验。

测试效用

下边采取方面提到的在线生成scheme的工具里提供的样例,测试下我们刚刚编写的代码:
instance:

{
  "checked": false,
  "dimensions": {
    "width": 5,
    "height": 10
  },
  "id": 1,
  "name": "A green door",
  "price": 12.5,
  "tags": [
    "home",
    "green"
  ]

schema过长,就不贴了,详见这里

在页面举办测试,效果如下:

新莆京娱乐场 2

image

把 "width": 五 改为 "width": 5.5,测试效果:

新莆京娱乐场 3

qq 20171226130003

在一个在线测试工具上测试效果:

新莆京娱乐场 4

qq 20171226121604

新莆京娱乐场 5

qq 20171226121733

能够看出一个在线测试工具,多个输出了错误消息和警示音信,另多个只输出了错误音讯。而笔者辈地方开辟的工具只输出了错误音信,是因为自己把警告过滤掉了,那个能够依靠实际供给开始展览修改。

title 和 description

titledescription 关键字是描述性的,并不对数码有所约束功效,只是用来对文书档案作补充表达:

JavaScript

{ "title": "标题", "description": "描述" }

1
2
3
4
{
"title": "标题",
"description": "描述"
}

贰. JSON Schema关键字详解

例一:涉及的首要字($schema、title、description、type、properties、required)

{ "$schema": "http://json-schema.org/draft-04/schema#", "title": "TestInfo", "description": "some information about test", "type": "object", "properties": { "name": { "description": "Name of the test", "type": "string" } }, "required": [ "name" ]}

该重大字用于钦定JSON Schema版本新闻,例一中钦定的版本为:draft-04。该重大字是可以回顾的,当前风行版本为draft-06。注意:该重大字的值必须使用官方提供的值,不能够和睦不论写。

那多个非常重要字都以用来说述对应的JSON成分的,唯壹的区分在于,title相对来讲,特别从简,而description特别倾向于详细描述相关音讯。当然了,那五个首要字都以足以省略的。大家来看例一中最外层的title和description是对待校验JSON对象的叙说,而里面,name成分之下的description其实是比照校验JSON对象的一流key的讲述,当然,你也足以对name增加title新闻。

该重大字用于限定待校验JSON元素所属的数据类型,例一中最外层的type关键字值为object,即意味着待校验JSON数据为三个JSON对象,而name下的type关键字值为string,即表示待校验JSON对象中的顶级key的数据类型为string。那么,依照这几个须要,下边那么些JSON数据是符合必要的。

{ "name": "hello first blog"}

而,下边这些JSON数据是不符合须要的,因为name的类型为integer也许number,而不是string。

{ "name": 520}

JSON Schema 简介

JSON Schema is a vocabulary that allows you to annotate and validate JSON documents.

JSON Schema官网

JSON Schema 是3个方可对json格式数据开始展览校验和进行内容叙述的文书档案,它自个儿也是基于json格式的。
第二有以下职能:

  1. 对现存的json数据格式进行描述(字段类型、内容长度、是不是必须存在、取值示例等);
  2. 是1个叙述清晰、人机可读的文书档案;
  3. 自动测试、验证客户端提交的数据;

本文由新浦京81707con发布于功能介绍,转载请注明出处:新莆京娱乐场校验实例,基本概念

关键词: 笔记 HTML5 json 随笔 程序员

上一篇:Html5实现二维码扫描并解析,扣丁学堂简述HTML5打

下一篇:没有了