JSON Schema

应用程序通常需要验证 JSON 对象,以确保存在所需的属性并满足其他验证约束(例如价格永远不会低于一美元)。这些验证通常在JSON Schema的上下文中执行.

1. 句法验证与语义验证

当我们验证没有Schema的 JSON 文档时,我们只验证文档的语法。语法验证仅保证文档的格式正确.

JSONLint和 JSON 解析器等工具仅执行语法验证.

语义验证不仅仅是语法验证。它执行语法检查以及数据检查.

语义验证有助于确保客户端仅发送 JSON 文档中允许的字段,而不发送任何无效的名称/值对.

它还可以帮助检查电话号码、日期/时间、邮政编码、电子邮件地址或信用卡号码的格式.

2. 什么是 JSON Schema?

JSON Schema 是一种语法语言,用于定义 JSON 对象的结构、内容和(在某种程度上)语义。它允许您指定有关对象属性的含义以及这些属性的有效值的元数据(有关数据的数据).

将语法语言应用于 JSON 文档的结果是schema(蓝图),用于描述根据schema有效的 JSON 对象集.

  1. JSON Schema 本身就是一个 JSON 对象.
  2. JSON Schema 语法维护在 http://json-schema.org.
  3. 它描述了现有的数据格式.
  4. 如果提供清晰的、人类可读和机器可读的文档.
  5. 它提供完整的结构验证,这对于自动化测试和验证客户提交的数据非常有用.

3. JSON Schema 验证示例

让我们考虑以下 JSN schema :

{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"title": "Person",
	"description": "A person",
	"type": "object",
	"properties":
	{
		"name":
		{
			"description": "A person's name",
			"type": "string"
		},
		"age":
		{
			"description": "A person's age",
			"type": "number",
			"minimum": 18,
			"maximum": 64
		}
	},
	"required": ["name", "age"]
}

JSON 文档是 :

{
	"name": "John Doe",
	"age": 35
}

JSON Schema 网站提供了针对不同编程语言的各种验证器实现的链接(请参阅 http://json-schema.org/implementations.html )。我们可以下载实现并将其集成到我们的应用程序中,但须遵守许可要求.

在给定的示例中,我们使用了JSONSchemaLint 的在线验证器.

3.1. 有效的 JSON 文档示例

Valid JSON
有效的 JSON

3.2. 无效的 JSON 文档示例 (age > 64)

Invalid JSON
无效的 JSON