2017-01-09 3 views
1

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

Это может быть тип = строка, которая имеет схему:

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

В других случаях это может быть тип = объект, схема выглядит следующим образом:

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

Как выразить, что «mixed_field» может быть либо строковым, либо типом? Должен ли я использовать ключевое слово «oneOf» следующим образом?

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

ответ

1

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

+1

Не знал, что «свойства» будут игнорироваться, если тип примитивен! Спасибо за головы. Есть ли особые предпочтения по сравнению с использованием ключевого слова oneOf vs, перечисляющего поле типа? – pl0u