iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >JSON Schema概念及使用场景
  • 187
分享到

JSON Schema概念及使用场景

2024-04-02 19:04:59 187人浏览 独家记忆
摘要

目录1.什么是JSON Schema2. jsON Schema的应用场景2.1 表单数据校验2.2 接口数据校验2.3 低代码 low-code1.什么是JSON Schema 相

1.什么是JSON Schema

相信前端童鞋,对JSON应该都很熟悉。JSON (javascript Object Notation) 缩写,JSON 是一种数据格式,具有简洁、可读性高、支持广泛的特点JSON。通过JSON 我们可以灵活地来表示任意复杂的数据结构

比如我们要描述一个人的信息,我们可以用JSON来描述

那JSON Schema又是什么鬼? ?

JSON Schema 主要用于描述 JSON 数据,我们可以看到上面的JSON中不同的key-value数值,有string类型也有date类型。针对不同的应用场景,我们想约定JSON的数据所包含的字段、字段值得类型甚至依赖关系,那我们就需要有个规范来描述这些约束的关系。 而这也是JSON Schema 所存在的理由

下图表示就是一个JSON Schema,用于描述JSON数据。我们可以很明显看出JSON Schema本身是用JSON编写的, 换句话说他本身就是JSON文件!

JSON Schema 核心定义主要以下这些数据类型,通过 type 来指定 JSON 数据类型

啊乐同学:那我可以通过JSON Schema来做什么?

你看到上方的JSON Schema例子,很明显数据类型的定义可以方便我们用来做数据校验

结合上方的demo,我们通过这个在线校验工具来演示一波 ?

上图,JSON报出了不合法的提示,为什么呢?是因为我在左侧定义的birthday字段需要为date格式,而我们右侧定义的JSON数据中字段数值并不是date格式,所以校验出异常

再补充一个?:前后端先把数据接口约定好,等后端把接口输出完毕,直接用JSON Schema来对接口做验收。

除了上文的介绍:支持定义类型、对字段类型的校验之外,JSON Schema还支持以下几种特征

  • 判断字段是否必填
  • 支持正则表达式校验
  • 支持枚举
  • 字段个数、值最大最小值约束等等

总结:JSON Shema 本质上就是结构化json定义

关于不同数据类型的更详细定义,这里不大篇幅介绍。感兴趣的童鞋推荐看下方的推荐

拓展阅读:

JSON Schema 规范(中文版)

2. JSON Schema的应用场景

JSON Schema的优点在于可以对数据类型进行描述,方便理解。同时也让机器“读懂”,比如数据校验或、输入检测提示、自动化测试等等,我们就下面这几个前端应用场景来聊聊JSON Schema的落地实践

2.1 表单数据校验

在中后台应用中有大量的表单需求,而表单离不开数据校验,那有什么validator工具库可以使用? 你可以使用ajv这个经典的开源工具,它是一个非常流行的JSON Schema验证工具,而且性能号称最佳

上图为Ajv的具体使用,需要先声明一个数据模式schema,然后定义好规则(本质上是JSON Shema)然后我们再通过这个模式去校验用户输入的数据 data 是否符合我们的约束

Validator工具还有很多,包括开源组件库中常使用的async-validator,感兴趣的同学可以阅读树酱君之前写的下面这两篇文章:

这些node开源工具你值得拥有 - 数据校验工具

前端表单数据那些事

2.2 接口数据校验

当后端接口设计好后,前端需要根据接口的设计进行联调,一般接口文档都会约束并定义好接口中返回字段的类型。

结合最近使用的apifox来作接口调试,通过这个工具我们来聊聊背后的原理

首先我们可以在数据模型模块中里创建一个Pet实体,然后再定义宠物相关的字段,我们可以字段类型(本质上是基于JSON Schema 用来做数据校验),甚至可以根据定义的字段类型来定义期望Mock返回数据形式 ?

然后回到接口调试页面,我们在查询宠物详情这个接口中的data绑定我们预设好的实体Pet?

最后我们运行这个接口,发现Apifox会对接口返回的数据response做校验

上图介绍的工具本质上是基于JSON Schema对接口返回数据进行校验

而且基于Apifox工具还可以根据字段定义的类型,来选择Mock类型,Mock出来的数据人性化很多!而且除了有现成预设的mock规则,也支持手动设置mock规则(Mock.js)

2.3 低代码 low-code

基于JSON Schema 社区衍生了诸多比如动态表单、可视化搭建页面或数据大屏等开源项目

这里给大家推荐一个可视化H5搭建平台Dooring ?

本质上可视化搭建,主要包括以下几个方面?

  • 右侧区域:物料(控件)的自定义配置 setting
  • 中间区域:页面中图层引擎的渲染
  • 左侧区域:物料(控件)选择拖拽区域

那JSON-Schema在可视化搭建中起到什么作用?

你可以理解主要为两点:

  • 配置页生成 JSON Schema

  • 视图页消费解析JSON Schema 并渲染视图

H5-Dooring 的组件都是通过动态加载的方式引入,按需加载,不需要的组件不会被加载。底层技术是在umidynamic方案的基于上封装了一个组件动态加载器,具体如如下图。本质上也是结合了 JSON Schema

对可视化搭建感兴趣的同学,可以阅读树酱君之前写的 从0到1开发可视化数据大屏 ?

其他开源low-code项目可借鉴

百度 - amis

Vue-layout

阿里巴巴 - fORMily

阿里巴巴 - alist

鲁班H5

以上就是JSON Schema概念及使用场景的详细内容,更多关于JSON Schema使用场景的资料请关注编程网其它相关文章!

--结束END--

本文标题: JSON Schema概念及使用场景

本文链接: https://www.lsjlt.com/news/153992.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JSON Schema概念及使用场景
    目录1.什么是JSON Schema2. JSON Schema的应用场景2.1 表单数据校验2.2 接口数据校验2.3 低代码 low-code1.什么是JSON Schema 相...
    99+
    2024-04-02
  • JSON Schema概念及使用场景是什么
    本篇内容介绍了“JSON Schema概念及使用场景是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.什么是JSON Sch...
    99+
    2023-07-02
  • MySQL BlackHole引擎的概念和使用场景
    本篇内容介绍了“MySQL BlackHole引擎的概念和使用场景”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
  • AJAX概念以及使用
    AJAX (Asynchronous JavaScript and XML) 是一种用于在网页上实现异步数据交互的技术。它允许网页在...
    99+
    2023-09-23
    AJAX
  • 探索CSS伪类与伪元素的基础概念和使用场景
    了解CSS伪类和伪元素的基本概念及应用场景CSS(Cascading Style Sheets)是一种用于描述网页样式的标记语言,它可以控制网页中的元素的外观和布局。在CSS中,伪类和伪元素是非常有用的功能,可以进一步扩展CSS的应用范围和...
    99+
    2023-12-23
    应用场景 CSS伪类 伪元素
  • vue使用websocket概念及示例
    目录概念部分:使用示例概念部分: 1,WebSocket 是 HTML5 提供的 TCP 连接上进行全双工通讯的协议。一次握手之后,服务器和客户端可以互相主动通信,双向传输数据。 2...
    99+
    2024-04-02
  • Go语言图形API概述及应用场景
    Go语言是一种快速、简单、并发的编程语言,越来越受到开发者的青睐。在Go语言中,图形API的应用也是非常广泛的,可以用于开发图形界面应用、数据可视化、游戏开发等方面。本文将对Go语言中...
    99+
    2024-04-02
  • java中IO的概念及使用
    本篇内容主要讲解“java中IO的概念及使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中IO的概念及使用”吧!目录一.认识IOIO的分类IO的方式IO读写的方式IO的特性二.文件操作...
    99+
    2023-06-20
  • sql中schema的应用场景有哪些
    在SQL中,schema的应用场景包括但不限于以下几个方面: 数据库设计:schema定义了数据库中的表结构、字段以及数据类型,...
    99+
    2024-04-09
    sql
  • Java多线程的概念及使用
    本篇内容介绍了“Java多线程的概念及使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录线程Thread类Runnable接口创建线程T...
    99+
    2023-06-20
  • VUE Nuxt.js中间件:全面解析其概念、作用和应用场景
    一、中间件的概念 中间件是一种软件组件,它位于客户端和服务器之间,用于处理请求并响应请求。在 Vue Nuxt.js 中,中间件是一个特殊的函数,它可以拦截请求并执行自定义逻辑。中间件可以用于各种目的,例如: 身份验证:检查用户是否已登...
    99+
    2024-02-14
    Vue Nuxt.js 中间件 请求处理 自定义逻辑
  • Java接口interface的概念及使用
    本篇内容介绍了“Java接口interface的概念及使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在抽象类中,可以包含一个或多个抽象方...
    99+
    2023-06-03
  • 《Flink学习笔记》——第一章 概念及背景
    ​ 什么是批处理和流处理,然后由传统数据处理架构为背景引出什么是有状态的流处理,为什么需要流处理,而什么又是有状态的流处理。进而再讲解流处理的发展和演变。而Flink作为新一代的流处理器,它有什么优势?它的相关背景及概念和特性又是什么?...
    99+
    2023-08-30
    flink 学习 笔记
  • futuretask用法及使用场景介绍
    FutureTask可用于异步获取执行结果或取消执行任务的场景。通过传入Runnable或者Callable的任务给FutureTask,直接调用其run方法或者放入线程池执行,之后可以在外部通过FutureTask的get方法异步获取执行...
    99+
    2023-05-31
    java futuretask
  • JavaScript类型概念及使用的方法
    这篇文章主要介绍“JavaScript类型概念及使用的方法”,在日常操作中,相信很多人在JavaScript类型概念及使用的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”...
    99+
    2024-04-02
  • 在Visual Studio 中使用git及Git概念
    目录第一部分:Git是什么?一、工作与操作流程1、Git工作流程2、Git操作过程图解3 Git中常见名词解释二、 Windows上安装Git三、SVN与Git的最主要的区别?四、理...
    99+
    2024-04-02
  • Java SPI概念、实现原理、优缺点、应用场景、使用步骤、实战SPI案例
    一、前言 在当今互联网时代,应用程序越来越复杂,对于我们开发人员来说,如何实现高效的组件化和模块化已经成为了一个重要的问题。而 Java SPI(Service Provider Interface)机制,作为一种基于接口的服务发现机制,可...
    99+
    2023-08-17
    java SPI
  • WeakHashMap 和 HashMap 区别及使用场景
    目录引言1. 回顾 HashMap 和 LinkedHashMap1.1 说一下 HashMap 的实现结构1.2 说一下 LinkedHashMap 的实现结构2. 认识 Weak...
    99+
    2022-11-16
    WeakHashMap HashMap区别 WeakHashMap HashMap
  • 【Java基础教程】(二十二)Java新特性篇 · 第二讲:foreach循环——概念及优缺点、使用方式及应用场景~
    Java基础教程之新特性 · foreach循环 1️⃣ 概念2️⃣ 优势和缺点3️⃣ 使用及应用场景🌾 总结 1️⃣ 概念 Java的 foreach 特性最初出现在JDK 1.5中,也被称为“增强的for...
    99+
    2023-08-16
    java 开发语言 后端 java-ee intellij-idea
  • vue项目中 jsconfig.json概念及使用步骤
    目录vue项目中 jsconfig.json是什么概述一、使用tsconfig.json或jsconfig.json二、使用步骤1. 配置说明2. 配置 webpack 别名3. c...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作