如何在 json 模式中表示 sum/union 类型

How to represent sum/union types in in json schema

我正在尝试使用 json-schema 记录对 JSON 的现有使用。对于对象属性之一,系统允许以下两种可能性。

两者都

{
    "tracking_number" : 123
}

或者

{
    "tracking_number" : [ 123, 124, 125 ]
}

如何使用 json 架构来表达这一点?

使用 anyOf 断言 属性 必须符合一个或另一个模式。

{
    "type": "object",
    "properties": {
        "tracking_number": {
            "anyOf": [
                { "$ref": "#/definitions/tracking_number" },
                { "type": "array", "items": { "$ref": "#/definitions/tracking_number" }
            ]
    },
    "definitions": {
        "tracking_number": { "type": "integer" }
    }
}