Как представить типы суммы/объединения в схеме json

Я пытаюсь задокументировать существующее использование JSON с использованием json-схемы. Система допускает следующие две возможности для одного из атрибутов объекта.

Либо

{
    "tracking_number" : 123
}

Or

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

Как я могу выразить это, используя схему json?


person Q the Platypus    schedule 17.02.2016    source источник


Ответы (1)


Используйте anyOf, чтобы утверждать, что свойство должно соответствовать той или иной схеме.

{
    "type": "object",
    "properties": {
        "tracking_number": {
            "anyOf": [
                { "$ref": "#/definitions/tracking_number" },
                { "type": "array", "items": { "$ref": "#/definitions/tracking_number" }
            ]
    },
    "definitions": {
        "tracking_number": { "type": "integer" }
    }
}
person Jason Desrosiers    schedule 18.02.2016
comment
Оказалось, что oneOf был лучше для меня в этой ситуации. Но ты наставил меня на правильный путь. - person Q the Platypus; 19.02.2016
comment
Эти ключевые слова описаны здесь: json-schema.org/understanding-json- схема/ссылка/ - person Ari Fordsham; 07.09.2020