JSON schema配置规范使用教程

目录
  • 介绍
  • 使用
  • schemastore
  • 编写 schema
    • properties
    • definitions
  • 总结

介绍

不知道大家在写一些 JSON 配置时会不会经常觉得麻烦,每次都要打开文档去核对字段名称对不对、结尾有没有 s、结构是否正确、是不是数组等问题。然而我最近发现一些开源项目生成的配置文件中都开始使用 JSON schema 来规范配置文件,IDE 也会对 JSON 配置进行提示和检查,真香。本文介绍下 JSON schema 的使用方法和使用场景。

JSON schema 是一套对 JSON 进行规范化的方案,在 JSON 文件中声明 schema 即可使用 JSON schema 检查 JSON 文件的正确性,且大部分主流 IDE 可对 JSON 文件进行属性提示、字段校验。

使用

JSON schema 的使用方式非常简单,只需要在 JSON 文件中添加 $schema 字段,指定 schema 文件地址即可。

{
    "$schema": "https://json.schemastore.org/jsconfig"
}

添加后,IDE 或其它工具将会根据目标地址中的 schema 定义对 JSON 文件进行检查和智能提示等等。

如上图,会在编辑时自动提示字段名称,hover 字段名显示字段解释,类型错误的字段显示警告等等。

除了上述使用网络地址来标识 schema 文件外,还可以使用本地文件地址,比如:

{
    "$schema": "./my-schema.json"
}

schemastore

schemastore 中存储了很多项目常用的 JSON schema

地址:https://www.schemastore.org/json/

里面包含了常见的 prettiereslintjsconfigtsconfig、各类 ci/cdlerna 等工具的配置文件,可直接引用。

并且还提供了所有支持的清单:https://www.schemastore.org/api/json/catalog.json

开源项目可在 https://github.com/schemastore/schemastore/中提交自己的 schema

当然也可以自己管理,只需提供可访问的网络地址即可。

编写 schema

编写 schema 其实也很简单,JSON schema 也存在几套规范,我目前能看到的包括:

JSON Schema Draft 4

JSON Schema Draft 7

JSON Schema Draft 8

JSON Schema Draft 2020-12

上述对应的 schema 文件都可在 schemastore 中找到。

编写时同样可指定编写文件的 $schema,注意草案 8 和 2020-12 使用到了 $recursiveRef,而 vsc 暂不支持,所以下面使用 Draft 7 规范来进行编写。

{
    "$schema": "https://json-schema.org/draft-07/schema",
    "$id": "my-schema"
}

可使用 $id 来表示 schema

编写主要使用大两个属性,一个是 properties,用于定义属性,一个是 definitions,用于定义 schema 片段(可理解为变量)。

properties

先看下 properties 的使用:

{
    "properties": {
        "name": {
            "type": "string",
            "title": "this is your name"
        },
        "age": {
            "type": "number",
            "title": "this is your age"
        }
    }
}

上面定义了 json 中的两个属性,name 为字符串,title 为数字,title 为属性的描述,也可以使用 description

然后我们在 json 文件中即可使用 $schema 来引用我们刚刚定义的 schema,如下:

{
    "$schema": "my-schema.json",
    "name": "嘿嘿",
    "age": 32
}

definitions

definitions 一般用于定义一些复杂类型,方便在 schema 中复用定义:

{
    "definitions": {
        "name": {
            "type": "object",
            "properties": {
                "firstName": {
                    "description": "First name",
                    "type": "string"
                },
                "lastName": {
                    "description": "Last name",
                    "type": "string"
                },
                "middleName": {
                    "type": "string",
                    "description": "Middle name"
                }
            }
        }
    }
}

上述代码及定义里一个 nameschema 字段,包含 firstNamelastNamemiddleName 三个属性,然后我们需要在 properties 中引用它:

{
    "properties": {
        "fullName": {
            "$ref": "#/definitions/name"
        }
    }
}

$ref 代表此处定义为引用,属性为引用的地址,# 为该 schema 文件的根,此处即为引用 definitionsname 的定义。

然后我们便可在 json 文件中使用我们刚刚定义的 schema

{
    "$schema": "my-schema.json",
    "fullName": {
        "firstName": "嘿",
        "lastName": "嘿"
    }
}

除了上述的属性定义等, JSON schema 还提供了其它的一些定义,如数组、数字的范围等等。

总结

JSON schema 可以用来规范我们的配置文件,借助 IDE 的智能提示还能降低我们编写配置文件的成本,如果存在这方面的需求,赶紧用起来吧。

参考

JSON Schema

Understanding JSON Schema

以上就是JSON schema配置规范使用教程的详细内容,更多关于JSON schema配置规范的资料请关注我们其它相关文章!

(0)

相关推荐

  • 教你使用Psycopg2连接openGauss的方法

    目录 1.简介 2.接口介绍 开发流程 接口说明 3.使用 3.1环境准备 3.2下载并加载python驱动 3.3创建数据库连接用户 3.4示例 4.常见报错 1.简介 Psycopg是一种用于执行SQL语句的PythonAPI,可以为PostgreSQL.openGauss数据库提供统一访问接口,应用程序可基于它进行数据操作.Psycopg2是对libpq的封装,主要使用C语言实现,既高效又安全.它具有客户端游标和服务器端游标.异步通信和通知.支持“COPY TO/COPY FROM”功能.

  • windows环境下python连接openGauss数据库的全过程

    目录 一.python 介绍 二.Python下载及安装 三.openGauss Connectors (Psycopg2) 介绍 四.openGauss Connectors (Psycopg2)下载并初始化 五.连接并访问openGauss数据库 六.问题总结(FAQ) 总结 一.python 介绍 python最新版 windows python是款面向对象.直译式计算机程序设计语言,同时也是一种功能强大而完善的通用型语言,具有非常简洁而清晰的语法特点,适合完成各种高层任务,几乎可以在所有

  • openGauss的SCHEMA的原理及管理介绍

    目录 1.何为Schema摘要: 2.Schema语法 2.1 创建SCHEMA 2.2 修改SCHEMA 2.3 删除SCHEMA 3.Schema赋权 1.何为Schema摘要: 本篇介绍了openGauss的SCHEMA的原理及管理. Schema又称作模式.通过管理Schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库对象组织成易于管理的逻辑组,同时便于将第三方应用添加到相应的Schema下而不引起冲突. 数据库(database).用户(user).schema.和表的关系

  • Monaco-editor 的 JSON Schema 配置及使用介绍

    目录 JSON Schema 作用用法 JSON Schema Core Vocabulary $schema $id $ref $dynamicRef $anchor / $dynamicAnchor $defs 关键字 type title & description default examples deprecated readOnly & writeOnly $comment enum const 媒体类型关键字 contentMediaType contentEncoding

  • JSON Schema概念及使用场景

    目录 1.什么是JSON Schema 2. JSON Schema的应用场景 2.1 表单数据校验 2.2 接口数据校验 2.3 低代码 low-code 1.什么是JSON Schema 相信前端童鞋,对JSON应该都很熟悉.JSON (JavaScript Object Notation) 缩写,JSON 是一种数据格式,具有简洁.可读性高.支持广泛的特点JSON.通过JSON 我们可以灵活地来表示任意复杂的数据结构. 比如我们要描述一个人的信息,我们可以用JSON来描述 那JSON Sc

  • Linux环境下的Java(JDBC)连接openGauss数据库实践记录

    目录 一.测试环境: 本实验预置环境 二.Linux环境安装Java环境及配置步骤 三.准备链接数据库的环境 四.连接测试 五.经验小结(FAQ) 一.测试环境: 本实验预置环境 1)操作系统版本:CentOS 7 64位(CentOS Linux release 7.6.1810)2)DataBase & JDBC版本: openGauss 2.0.1. JDBC驱动版本:JDBC_2.0.0官方下载地址:https://opengauss.org/zh/download/ (Tips:官方最

  • JSON schema配置规范使用教程

    目录 介绍 使用 schemastore 编写 schema properties definitions 总结 介绍 不知道大家在写一些 JSON 配置时会不会经常觉得麻烦,每次都要打开文档去核对字段名称对不对.结尾有没有 s.结构是否正确.是不是数组等问题.然而我最近发现一些开源项目生成的配置文件中都开始使用 JSON schema 来规范配置文件,IDE 也会对 JSON 配置进行提示和检查,真香.本文介绍下 JSON schema 的使用方法和使用场景. JSON schema 是一套对

  • springboot配置内存数据库H2教程详解

    业务背景:因soa系统要供外网访问,处于安全考虑用springboot做了个前置模块,用来转发外网调用的请求和soa返回的应答.其中外网的请求接口地址在DB2数据库中对应专门的一张表来维护,要是springboot直接访问数据库,还要专门申请权限等,比较麻烦,而一张表用内置的H2数据库维护也比较简单,就可以作为替代的办法. 环境:springboot+maven3.3+jdk1.7 1.springboot的Maven工程结构 说明一下,resource下的templates文件夹没啥用.我忘记

  • Parcel.js + Vue 2.x 极速零配置打包体验教程

    继 Browserify.Webpack 之后,又一款打包工具 Parcel 横空出世 Parcel.js 的官网有这样的自我介绍 "极速零配置Web应用打包工具" 简单接触了一下,单从效率上来说,确实要比 webpack 强上不少,可坑也挺多,未来升级之后应该会逐渐普及 官方文档:https://parceljs.org/getting_started.html 官方 GitHub:https://github.com/parcel-bundler/parcel 一.基本用法 Par

  • Spring Boot配置元数据方法教程

    这篇文章主要介绍了Spring Boot配置元数据方法教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 前言 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean上是非常有用的.但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot Configuration Processor和 关联的 JSON 元数据文件,该 JSON 文档记录每个属性的含义.约束等. 配置元数据 作为开发人员

  • 最新VScode C/C++ 环境配置的详细教程

    前言 一次在VScode上配置C/C++环境的记录. 一.VScode下载及安装 VScode官网下载链接:https://code.visualstudio.com/Download 1.安装路径自行选择,例如我的安装路径为D:\Program Files\Microsoft VS Code: 2.安装完成进入VScode后按照步骤install中文插件完成汉化(此处我已完成汉化,故插件包显示"卸载",未安装情况下此处应显示"install"): 3.以同样的步骤

  • postgresql安装及配置超详细教程

    1. 安装 根据业务需求选择版本,官网下载 yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm yum install postgresql96 postgresql96-server rpm -qa|grep postgre 初始化数据库 执行完初始化任务之后,postgresql 会自动创建和生成两个用户和一个数据库:

  • 史上最贴心的 VS code C++ 环境配置超详细教程

    前言 秦朝打败天下无敌手的室友法苏ovo前几天参加了CCSP,裸考的他遇见了Linux下的VsCode,然后搭C++环境搭了很久. 于是,他就学会了如何配置vscode的C++环境,然后,我也顺路学会了.真好. 一.VS code 前言 VS code作为一款当下非常受欢迎的一款IDE,关于它的优势这里就不赘述了,但想必用过它的人都应该体验过配环境的绝望,尤其是C++环境的配置. 有一说一,VS code 上面C++调试起来是真的挺方便的,真的很棒. 这里给大家介绍两种C++环境配置方法: 纯手

  • Rainbond自动部署初始化Schema的数据库步骤教程

    目录 为什么使用Rainbond? Schema初始化在传统模式中一般有两种方案: 目录结构 Dockerfile文件 为什么使用Rainbond? 我们使用容器的方式部署数据库组件,特别是企业有大量的项目开发业务的,部署的开发.测试数据库组件较多时.经常会遇到以下问题: 业务需要使用数据库,但部署完数据库后,需要在数据库中执行创建schema的操作或者一些初始化数据的创建. 开发测试多套部署环境,需要多次重复1的步骤. 项目比较多,时间久了项目需要的数据库Schema不清楚. 项目交付时数据库

  • ExceptionLess的安装、配置、使用教程

    目录 前言 安装 邮件配置 AspNetCore集成 提交错误信息 集成日志框架 其他语言能用吗? 参考资料 前言 Exceptionless 是一个开源的实时的日志收集框架,它可以应用在基于 ASP.NET,ASP.NET Core,Web API,Web Forms,WPF,Console,ASP.NET MVC 等技术开发的应用程序中,并且提供了REST接口可以应用在 Javascript,Node.js 中.(基本就是.Net技术栈的一套东西) 项目地址:https://github.c

随机推荐