JSON- 框架模式(Schema)

许出野
2023-12-01


JSON模式是基于JSON格式定义JSON数据结构的规范。它被写在IETF草案,于2011年到期。 JSON模式:

  • 描述现有的数据格式

  • 干净的人类和机器可读的文档

  • 完成结构验证,可用于自动化测试

  • 完成结构验证,验证客户端提交的数据

JSON模式验证库

有几个验证器目前可用于不同的编程语言。目前最完整和最兼容的JSON模式验证可用JSV

语言 程序库
C WJElement (LGPLv3)
Java json-schema-validator (LGPLv3)
.NET Json.NET (MIT)
ActionScript 3 Frigga (MIT)
Haskell aeson-schema (MIT)
Python Jsonschema
Ruby autoparse (ASL 2.0); ruby-jsonschema (MIT)
PHP php-json-schema (MIT). json-schema (Berkeley)
JavaScript Orderly (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (modified BSD or AFL 2.0); schema.js.

JSON模式示例

以下是一个基本的JSON模式,其中涵盖了经典的产品目录说明:

{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "title": "Product",
    "description": "A product from Acme's catalog",
    "type": "object",
    "properties": {
        "id": {
            "description": "The unique identifier for a product",
            "type": "integer"
        },
        "name": {
            "description": "Name of the product",
            "type": "string"
        },
        "price": {
            "type": "number",
            "minimum": 0,
            "exclusiveMinimum": true
        }
    },
    "required": ["id", "name", "price"]
}

让我们来看看在这个模式中可以使用的各种重要的关键词:

关键字 描述
$schema The $schema 关键字状态,这种模式被写入草案V4规范。
title 将使用此架构提供一个标题
description 架构的一点描述
type 我们 JSON 数据类型关键字定义的第一个约束条件:它必须是一个JSON对象
properties 定义各个键和它们的值类型,最小和最大值中要使用JSON文件
required 这样可以使所需的属性的列表
minimum 这是约束的值,并代表可接受的最小值
exclusiveMinimum 如果“exclusiveMinimum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的最低限度的值
maximum 这是约束的值被提上表示可接受的最大值
exclusiveMaximum 如果“exclusiveMaximum”的存在,并且具有布尔值true的实例是有效的,如果它是严格的值小于“最大”。
multipleOf 数值实例有效反对“multipleOf”分工的实例此关键字的值,如果结果是一个整数。
maxLength 字符串实例的长度被定义为字符的最大数目
minLength 字符串实例的长度被定义为字符的最小数目
pattern String实例被认为是有效的,如果正则表达式匹配成功实例

也可以同时查阅 http://json-schema.org 的关键字可以用在定义JSON模式的完整列表。以上模式可用于测试的有效性,下面给出的JSON代码:

[
    {
        "id": 2,
        "name": "An ice sculpture",
        "price": 12.50,
    },
    {
        "id": 3,
        "name": "A blue mouse",
        "price": 25.50,
    }
]
 类似资料: