AnyOf против массива типов - PullRequest
2 голосов
/ 28 марта 2019

Есть ли различия между следующими двумя валидациями JSON-схем или они проверяют одну и ту же структуру данных?

SomeProperty
{
    "type": ["integer","string"]
}
SomeProperty
{
    "anyOf": [
         {
            "type": "integer"
         },
         {
             "type": "string"
         }
     ]
}

1 Ответ

1 голос
/ 28 марта 2019

Они эквивалентны!

type

Значение этого ключевого слова ДОЛЖНО быть либо строкой, либо массивом. Если оно является массивом, элементы массива ДОЛЖНЫ быть строками и ДОЛЖНЫ быть уникальными.

Строковые значения ДОЛЖНЫ быть одним из шести типов примитивов («ноль», "логическое значение", "объект", "массив", "число" или "строка") или "целое число" который соответствует любому числу с нулевой дробной частью.

Экземпляр проверяется тогда и только тогда, когда экземпляр находится в любом из наборы, перечисленные для этого ключевого слова.

https://tools.ietf.org/html/draft-handrews-json-schema-validation-01#section-6.1.1

Обратите внимание на последний раздел "... в любом из ..."

...