美文网首页
一文搞懂 JSON Schema

一文搞懂 JSON Schema

作者: shengjk1 | 来源:发表于2022-08-16 18:17 被阅读0次

    JSON Schema 是什么

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

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

    JSON Schema 怎么用

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

    {
      "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 片段描述了上面第二个示例的结构。现在不要太担心细节。

    {
      "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" }
          }
        }
      }
    }
    

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

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

    参考

    understanding-json-schema

    相关文章

      网友评论

          本文标题:一文搞懂 JSON Schema

          本文链接:https://www.haomeiwen.com/subject/kqldgrtx.html