这些前端新技术你很难再忽视了 —— JSON Schema

简介: 这些前端新技术你很难再忽视了 —— JSON Schema

image.png

新系列《这些前端新技术你很难再忽视了》,包括:SolidJS、Svelte、Tauri、Bun、Schema等。每一个都引领前端技术演变趋势,很有必要了解。

本篇带来 —— JSON Schema


闲话少说,冲了~


  • 点赞收藏关注,今晚一夜暴富 👍👍👍

image.png


什么是 JSON Schema?

答:一言以蔽之:JSON Schema 之于 JSON ,就像 TypeScript 之于 JavaScript


我们知道,JSON 作为主要的前后端交互格式,已经称霸多年了,json 的本质就是对象,它足够轻量、简单、易读,但是它也存在它的问题。


即:没有格式校验

比方说:一段 JSON 代码如下


{
    number:10,
    street_name:"唐宁街",
    street_type:"Avenue"
}


尽管这段 json 对开发的人来说简单明了,我们很容易就知道它是表示一个街道信息的对象,但仍然存在一些问题,比如:


  • number 可以是字符串吗?有最大值、最小值的限制吗?
  • street_name 可以是是数字吗?字符长度有限制吗?
  • street_type 可以是任意值?还是有哪些固定可选项可供选择?


好了,JSON Schema 可以解决这一点。

JSON Scheme 表示如下:


{
        "$schema": "http://json-schema.org/schema#",
        "$id": "http://yourdomain.com/schemas/myschema.json",
        "title": "Street",
        "description": "it is a Street object",
  "type": "object",
  "properties": {
    "number": {
      "type": "number"
    },
    "street_name": {
      "type": "string"
    },
    "street_type": {
      "type": "string",
      "enum": ["Street", "Avenue", "Boulevard"]
    }
  },
  "required": ["number", "street_name"]
}


"$schema"$idtitledescription 这 4 个字段先不看。

  • "type": "object",说明这个 JSON 的类型,通常为 object 或 array
  • properties 关键字指定这个object有三个属性 number,street_name,street_type
  • 每个属性的 type 表示这个属性的数据类型
  • enum 关键字表示这个 street_type 的数据只能是"Street", "Avenue", "Boulevard"这三个值
  • required 表示number,street_name是必须有的属性,所有字段默认是非必须


这样一来,普通的 json 就被描述了,被规定格式了,被校验了!


合法的:

{
  "number": 1600,
  "street_name": "Pennsylvania",
  "street_type": "Avenue",
  "direction": "NW"
}


不合法的:

{
  "number": 1600,
  "street_name": "Pennsylvania",
  "street_type": "super-speed"
}


因为:street_type 的值不属于限定中的枚举值

好了,再来看 "$schema"$idtitledescription 这 4 个字段:

  • "$schema":因为 JSON Schema 本身就是JSON,所以很难判断什么是JSON Schema,什么只是JSON 数据。 $schema 关键字用于声明 JSON Schema。
  • $id:作为每个模式的惟一标识符,类似于 $ref 作标记用,可被引用。
  • title:标题
  • description:描述


除了上面所说属性以外,JSON Schema 还规定了很多其它属性,比如:maximumminimum 大于小于,pattern 正则校验,items 限定数组中的每一项的类型 等等。

例:

···
     "phone": {
        "description": "The contact for a person",
        "type": "string",
        "pattern": "^[13|14|15|16|17|18|19][0-9]{9}$"
    },
    ···


更多高阶用法,比如对象之间的引用、生成递归结构、dependencies,additionalItems,consts, allOf, anyOf, oneOf, not, if……then……else 等等等,了解更多在官网:json-schema.org 或者 understanding-json-schema

所以,综上,说:JSON Schema 之于 JSON ,就像 TypeScript 之于 JavaScript,非常准确。


另外:提供一些辅助工具在线地址,拿去玩(●'◡'●):



相关文章
|
12天前
|
人工智能 Rust 前端开发
前端界的未来趋势:掌握这些新技术,让你的作品走在时代前沿!
【10月更文挑战第30天】前端开发正以前所未有的速度发展,新技术层出不穷。本文探讨了AI助手(如GitHub Copilot)、低代码/无代码平台、跨平台技术(如React Native)和WebAssembly等未来主流技术,并附上示例代码,帮助你走在时代前沿。
39 1
|
3月前
|
XML JSON 前端开发
【Web前端揭秘】XML与JSON:数据界的双雄对决,你的选择将如何改写Web世界的未来?
【8月更文挑战第26天】本文深入探讨了XML和JSON这两种广泛使用的数据交换格式在Web前端开发中的应用。XML采用自定义标签描述数据结构,适用于复杂层次数据的表示,而JSON则以键值对形式呈现数据,更为轻量且易解析。通过对两种格式的示例代码、结构特点及应用场景的分析,本文旨在帮助读者更好地理解它们的差异,并根据实际需求选择最合适的数据交换格式。
60 1
|
5天前
|
前端开发 JavaScript
前端界的革命:掌握这些新技术,让你的代码简洁到让人惊叹!
前端技术的快速发展带来了许多令人惊叹的新特性。ES6及其后续版本引入了箭头函数、模板字符串等简洁语法,极大减少了代码冗余。React通过虚拟DOM和组件化思想,提高了代码的可维护性和效率。Webpack等构建工具通过模块化和代码分割,优化了应用性能和加载速度。这些新技术正引领前端开发的革命,使代码更加简洁、高效、可维护。
11 2
|
11天前
|
前端开发 开发者 C++
独家揭秘:前端大牛们如何高效学习新技术,保持竞争力!
【10月更文挑战第31天】前端技术飞速发展,如何高效学习新技术成为关键。本文通过对比普通开发者与大牛们的策略,揭示了高效学习的秘诀:明确目标、主动探索、系统资源、实践应用和持续学习。通过这些方法,大牛们能更好地掌握新技术,保持竞争力。示例代码展示了如何通过实践加深理解。
28 4
|
12天前
|
前端开发 JavaScript API
前端界的革命性突破:掌握这些新技术,让你的作品引领潮流!
【10月更文挑战第30天】前端技术日新月异,从传统的HTML、CSS、JavaScript到现代的React、Vue、Angular等框架,以及Webpack、Sass等工具,前端开发经历了巨大变革。本文通过对比新旧技术,展示如何高效掌握这些新技术,助你作品引领潮流。
29 2
|
6月前
|
JSON 前端开发 JavaScript
前端使用lottie-web,使用AE导出的JSON动画贴心教程
前端使用lottie-web,使用AE导出的JSON动画贴心教程
601 2
|
3月前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
51 0
|
4月前
|
JavaScript 前端开发 CDN
前端 JS 经典:package.json 属性详解
前端 JS 经典:package.json 属性详解
37 1
|
4月前
|
JSON 前端开发 API
json-server : 前端工程师的小伙伴!
json-server : 前端工程师的小伙伴!
31 0
|
5月前
|
JSON 数据格式 微服务
.NET下 支持大小写不敏感的JSON Schema验证方法
有很多应用程序在验证JSON数据的时候用到了JSON Schema。 在微服务架构下,有时候各个微服务由于各种历史原因,它们所生成的数据对JSON Object属性名的大小写规则可能并不统一,它们需要消费的JSON数据的属性名可能需要大小写无关。 遗憾的是,目前的JSON Schema没有这方面的标准,标准中都是大小写敏感的。在类似上述情况下,这给使用JSON Schema进行数据验证造成了困难。