Схема Json - как выразить смешанные типы поля (строка и объект)?

У меня есть поле в наших данных с несколькими типами:

Это может быть type = string со схемой:

{"mixed_field" : {"type":"string"} }

В других случаях это может быть type = object, схема выглядит так:

{"mixed_field" : {
  "properties": {
    "access_token": {
      "type": "string"
    },
    "created_at": {
      "type": "integer"
    }
  },
  "type": "object"
  }
}

Как я могу выразить, что «смешанное_поле» может быть либо строкой типа, либо объектом типа? Следует ли использовать ключевое слово oneOf следующим образом?

{
  "mixed_field": {
    "oneOf": [
      {
        "type": "string"
      },
      {
        "properties": {
          "access_token": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          }
        },
        "type": "object"
      }
    ]
  }
}

person pl0u    schedule 09.01.2017    source источник


Ответы (1)


Вы можете использовать oneOf / anyOf или "type": ["string", "object"], если это строка, ключевое слово "properties" будет проигнорировано.

person esp    schedule 09.01.2017
comment
Не знал, что свойства будут проигнорированы, если тип примитивен! Спасибо за внимание. Есть ли какие-то особые предпочтения по сравнению с использованием ключевого слова oneOf и перечислением поля типа? - person pl0u; 09.01.2017