最近在做一些关于JSON Schema的基建,JSON Schema可以描述一个JSON结构,那么反过来他也可以来验证一个JSON是否符合期望的格式。

如果之前看我写的《使用joi来验证数据模型》 可能会问,为什么不使用JOI,反而使用JSON Schema?因为JOI这个nodejs库,除了验证格式,还带有验证字段关系的功能,库体积相对庞大,而且对于含有嵌套格式的JSON,用JOI来编写验证配置,极为繁琐。JSON Schema清晰简读,用来验证接口数据非常合适。

假设我们有一个期望JSON:

{
users: [
{ id: 1, username: "zzbo", }
]
}

我们理解这个JSON结构如下:

  • 这个JSON对象有一个users的属性
  • 这个user属性是一个数组
  • 这个数组里面的元素是一个对象
  • 每一个对象里面包含了两个字段:id(Number),username(String)

用JSON Schema来描述这个JSON的结构

{
"$schema": "http://json-schema.org/draft-04/schema#",
"type" : "object",
"properties" : {
"users" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"id": { "type": "number" },
"username": { "type" : "string" }
}
}
}
}
}

描述一个JSON就是这么简单。

如果还嫌编写Shema麻烦,哪位高手来写一个根据JSON自动生成JSON Schema的工具。

DOJO已提供了JSON Schema来验证接口数据的功能:

dojo其实早已经这样干,我们可以借鉴。

// 引入dojo的json schema验证模块
dojo.require("dojox.json.schema"); dojo.ready(function() {
// 加载指定的schema
dojo.xhrGet({
url: 'schema.json',
handleAs: 'json',
load: function(schema) { // 拉取数据
dojo.xhrGet({
url: 'users.json',
handleAs: 'json',
load: function(users) {
// 使用 dojo 的 json schema验证模块来验证
var result = dojox.json.schema.validate(users, schema);
console.log(result);
}
});
}
});
});

如果验证合法则返回true, 否则他会返回一个错误信息:

{
errors: [
{
message: "is missing and not optional",
property: "users"
}
]
valid: false
}

然而,我们往往会担心数据的某个字段缺失,或者类型不是我们所期望的,然后程序中又疏忽于这些判断。如果我们要打造一个像dojo这样的json schema验证工具,除了validate功能,最好还会有一个fill功能,用于自动填充缺失的字段。

相关资料

JSON Schema 规范

使用JSON Schema来验证接口数据的更多相关文章

  1. Postman使用tv4进行JSON Schema结构验证和断言

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

  2. JSON Schema(模式)

    JSON Schema指的是数据交换中的一种虚拟的“合同”. JSON验证器负责验证语法错误,JSON Schema负责提供一致性检验. JSON Schema是数据接收方额第一道防线,也是数据发送方 ...

  3. 利用JSON Schema校验JSON数据格式

    最近笔者在工作中需要监控一批http接口,并对返回的JSON数据进行校验.正好之前在某前端大神的分享中得知这个神器的存在,调研一番之后应用在该项目中,并取得了不错的效果,特地在此分享给各位读者. 什么 ...

  4. Json Schema 是什么?

    本文地址:Json Schema 是什么? 简单说,Json Schema 其实就是一个标准的 Json 串,它以一个 Json 串来描述我们需要的数据规范,并且支持注释以及验证 Json 文档,即我 ...

  5. Json.Net使用JSON Schema验证JSON格式【实例】

    给出一个Json,验证其格式是否符合规则. { "coord": { //对象 "lon": 145.77, "lat": -16.92 } ...

  6. Json.Net使用JSON Schema验证JSON格式

    Json.NET supports the JSON Schema standard via the JsonSchema and JsonValidatingReader classes. It s ...

  7. 接口数据转json格式

    接口数据转json格式 function tojson($result, $callback = null){ header('Content-Type:text/html; charset=utf- ...

  8. chrome json接口数据 插件

    chrome json接口数据 插件 JSON-Handle 官网 下载后 地址栏输入 chrome://extensions/ 将下载的文件拖入页面 OK

  9. 技术那么多,你想看看JSON Schema的测试吗?

    目录 1. 什么是JSON Schema? 2. 如何定义一个JSON Schema 3. 如何测试JSON Schema a) 使用JSON Schema validator GUI b) 在Jav ...

随机推荐

  1. 循序渐进Python3(十一) --1-- web之css

    css样式: css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化,CSS的可以使页面更加的美观. 基本上所有的html页面都或多或少的使用css.   ...

  2. ORACLE FAQ

    Q:sqlplus连接时报:ORA-12560: TNS:protocol adapter error A:1:cmd命令行上: C:\> set ORACLE_SID=orcl orcl是设置 ...

  3. IntelliJ设置鼠标悬浮提示和修改快捷键

    IntelliJ设置鼠标悬浮提示和修改快捷键 设置鼠标悬浮提示 修改快捷键 进入设置菜单 删除原来的快捷键(注:你可以选择保留原来的快捷键,同时使用两个快捷键) Good Luck

  4. PHP实现CSV大文件数据导入到MYSQL数据库

    <?php $db_host="192.168.1.10"; $db_user="root"; $db_psw="11111"; $d ...

  5. 05 Apache Solr: 管理员界面(Admin UI)

         为了方便管理员和工程师调整Solr的配置和访问在线文档和其他的帮助,Solr提供了一个Web界面去查看Solr的配置详情,运行查询语句和分析文档字段.这个界面在第三篇里面提到过就是管理员界面 ...

  6. Android内部自带的SQLite数据库操作dos命令

    1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...

  7. 把vim当做golang的IDE

    开始决定丢弃鼠标,所以准备用vim了. 那么在vim里面如何搭建golang环境呢? git盛行之下,搭建vim环境是如此简单. 而且vim搭建好了之后,基本上跟IDE没有差别. 高亮.自动补全.自动 ...

  8. Windows XP SP3下成功编译CUint2.1-3

    软件环境:Visual C++ 6.0 操作系统:Windows XP SP3 从sourceforge.net下载CUint-2.1-3.tar.bz解压出目录CUnit-2.1-3 从CUint打 ...

  9. Unity 之 Shader 对Z深度的偏移

    对Z深度的偏移 Offset 指令给了我们一个操作正常的ZTest 检测结果的手段. Offset有两个参数,这两个参数理解起来不是很直观,而且具体实现是和硬件相关的 下面在实际例子中看他的效果 Sh ...

  10. 清空IE缓存

    1.打开IE Internet选项 点击设置 2.打开临时文件 点击 查看文件 将目录下的 文件全部删除  重新打开网站即可 到此IE缓存就被删除.