应用程序通常需要验证 JSON 对象,以确保存在所需的属性并满足其他验证约束(例如价格永远不会低于一美元)。这些验证通常在JSON Schema的上下文中执行.
1. 句法验证与语义验证
当我们验证没有Schema的 JSON 文档时,我们只验证文档的语法。语法验证仅保证文档的格式正确.
JSONLint和 JSON 解析器等工具仅执行语法验证.
语义验证不仅仅是语法验证。它执行语法检查以及数据检查.
语义验证有助于确保客户端仅发送 JSON 文档中允许的字段,而不发送任何无效的名称/值对.
它还可以帮助检查电话号码、日期/时间、邮政编码、电子邮件地址或信用卡号码的格式.
2. 什么是 JSON Schema?
JSON Schema 是一种语法语言,用于定义 JSON 对象的结构、内容和(在某种程度上)语义。它允许您指定有关对象属性的含义以及这些属性的有效值的元数据(有关数据的数据).
将语法语言应用于 JSON 文档的结果是schema(蓝图),用于描述根据schema有效的 JSON 对象集.
- JSON Schema 本身就是一个 JSON 对象.
- JSON Schema 语法维护在 http://json-schema.org.
- 它描述了现有的数据格式.
- 如果提供清晰的、人类可读和机器可读的文档.
- 它提供完整的结构验证,这对于自动化测试和验证客户提交的数据非常有用.
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 的在线验证器.