JSON schema配置规范使用教程 - 网站

JSON schema配置规范使用教程

分类:js_JSON 答疑 - 常见问题 · 发布时间:2023-04-20 13:37 · 阅读:4711

这篇文章主要为大家介绍了JSON schema配置规范使用教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

介绍

不知道大家在写一些 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配置规范的资料请关注0133技术站其它相关文章!

标签:
JSON schema 配置 规范

相关文章

写给小白学习的地理信息的表示法GeoJSON

这篇文章主要为大家介绍了写给小白学习的地理信息的表示法GeoJSON的详细实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一文了解什么是JWT

JSON WEB Token是一种基于JSON的、用于在网络上声明某种主张的令牌。由三部分组成: 头信息, 消息体和签名,下面就一起来了解一下什么是JWT

解读JSON的三种格式

这篇文章主要介绍了解读JSON的三种格式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一篇了解JSON与数据存储基础知识

这篇文章主要介绍了JSON与数据存储基础知识,本篇文章较为基础,但非常详细,可以很好的理解JSON和数据存储,,需要的朋友可以参考下

json简单介绍

我们知道AJAX技术能够使得每一次请求更加迅捷,对于每一次请求返回的不是整个页面,也仅仅是所需要返回的数据。

返回分类 返回首页