概述
用例
探索 JSON Schema 的所有功能。本节介绍了 JSON Schema 的最常见用例,但可能还有更多应用等待发现。
结构验证
结构验证是指 JSON 文档应遵循的结构,例如哪些属性必须存在、哪些位置预期哪些类型的值,以及它们的外观。
语义注释
需要对 JSON 文档中的值进行注释:用于机器可读性,以及用于文档目的。
特定于领域的语言
开发人员可以编写一个应用程序,该应用程序在内部使用 JSON Schema 作为特定于领域的语言,以便 Schema 仅由单个方在单个应用程序内部使用。通过使用声明性语言,应用程序需求可以比人类做得更好进行优化。
通用词汇
开发团队维护着两个相似的应用程序,但针对不同的平台,使用不同的语言。应用程序从 JSON 文档的公共存储库中下载和读取。他们希望确保两个应用程序都以相同的方式接受或拒绝 JSON,因此他们编写了单个 JSON Schema 并将其部署到这两个应用程序。
模型驱动的 UI 约束
当服务器声明提交必须满足的约束时,需要用户界面接收这些约束以提供可接受值的模型驱动验证,从而使表单对用户更易于访问。
UI 生成
JSON Schema 可用于自动生成符合给定 Schema 的用户界面。
模糊测试、枚举和生成
安全应用程序需要在有效集内和有效集之外生成 JSON 文档的示例。
部分验证
由于技术限制,某些 JSON 解析器可能只能理解 JSON 值空间的子集,并且有意义地验证应用程序读取的值,而不是提供给 JSON 解析器的 JSON 文档。
Web 资源的机器可读配置文件
提供 JSON 文档的 Web 服务器应该能够链接到一个配置文件文档,该文档以机器可读的形式描述数据的含义。
Schema 推断
这在数据科学中非常有用。你可能拥有巨大的 JSON 数据集,并且不太了解其结构。你可以使用工具从数据中推断出 JSON Schema,以便更好地理解和处理它。
超媒体
通用用户代理必须能够利用随着 Schema 演变而进行的 Schema,包括 Web 浏览器、蜘蛛和自动化工具。它应该支持松散耦合(就像 HTML 首页一样);因此 Schema 应该能够改变、添加和删除功能,而不会对兼容的客户端造成最小的破坏。
结果和报告
提供 Schema 和输入的方可能与执行验证的方不同;在这种情况下,应该有一种标准方法来抽象验证器接口,并报告验证操作的结果(验证结果、注释和错误)。
外部验证
作者可以嵌入其他媒体类型的资源,例如文本文档,或 base64 或十六进制编码的二进制文档;并且可能希望将这些文档的验证传递给另一个软件工具。
文档内数据一致性验证
JSON 文档可以携带必须在内部一致的关系数据。
跨数据库一致性验证
JSON 文档可以携带必须针对外部数据源验证的关系数据。
代码整理
有时需要格式化,这种格式化不会影响文档的应用程序级含义,而是纯粹出于美观或兼容性原因指定要求。