前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文搞懂 JSON Schema

一文搞懂 JSON Schema

作者头像
shengjk1
发布2022-09-22 16:59:30
6720
发布2022-09-22 16:59:30
举报
文章被收录于专栏:码字搬砖码字搬砖

JSON Schema 是什么

json schema以一个json串来描述的json数据规范。可以用json schema检验一个给定的json串是否满足约定的json数据规范。

除了用于完成JSON数据校验外,由于可以为JSON数据提供清晰、严谨的声明,JSON Schema在自动化API文档、自动化输入表单生成、JSON数据可视化等方面也有很好的应用场景

JSON Schema 怎么用

您可以想象以不同的方式在 JSON 中表示一个人的信息:

代码语言:javascript
复制
{
  "name": "George Washington",
  "birthday": "February 22, 1732",
  "address": "Mount Vernon, Virginia, United States"
}

{
  "first_name": "George",
  "last_name": "Washington",
  "birthday": "1732-02-22",
  "address": {
    "street_address": "3200 Mount Vernon Memorial Highway",
    "city": "Mount Vernon",
    "state": "Virginia",
    "country": "United States"
  }
}

尽管一种显然比另一种更正式,但是两种表述同样有效。记录的设计在很大程度上取决于它在应用程序中的预期用途,因此这里没有正确或错误的答案。然而,当应用程序说“给我一个人的 JSON 记录”时,准确地知道该记录应该如何组织是很重要的。例如,我们需要知道哪些字段是预期的,以及这些值是如何表示的。这就是 JSON Schema 的用武之地。以下 JSON Schema 片段描述了上面第二个示例的结构。现在不要太担心细节。

代码语言:javascript
复制
{
  "type": "object",
  "properties": {
    "first_name": { "type": "string" },
    "last_name": { "type": "string" },
    "birthday": { "type": "string", "format": "date" },
    "address": {
      "type": "object",
      "properties": {
        "street_address": { "type": "string" },
        "city": { "type": "string" },
        "state": { "type": "string" },
        "country": { "type" : "string" }
      }
    }
  }
}

通过针对此模式“验证”的一个失败案例如下:

代码语言:javascript
复制
{
  "name": "George Washington",
  "birthday": "February 22, 1732",
  "address": "Mount Vernon, Virginia, United States"
}

然而,第二个例子通过了,如下:

代码语言:javascript
复制
{
  "first_name": "George",
  "last_name": "Washington",
  "birthday": "1732-02-22",
  "address": {
    "street_address": "3200 Mount Vernon Memorial Highway",
    "city": "Mount Vernon",
    "state": "Virginia",
    "country": "United States"
  }
}

您可能已经注意到 JSON Schema 本身是用 JSON 编写的。它是数据本身,而不是计算机程序。它只是一种用于“描述其他数据结构”的声明性格式。这既是它的优点也是它的缺点(它与其他类似的模式语言共享)。简明地描述数据的表面结构并根据它自动验证数据很容易。但是,由于 JSON Schema 不能包含任意代码,因此在表达数据元素之间的关系上有所限制。因此,用于足够复杂的数据格式的任何“验证工具”都可能有两个验证阶段:一个在模式(或结构)级别,一个在语义级别。后一种检查可能需要使用更通用的编程语言来实现。

参考

understanding-json-schema

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JSON Schema 是什么
  • JSON Schema 怎么用
  • 参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档