2017-01-12 2 views
0

Я разрабатываю документацию API с помощью swagger.io и стараюсь, чтобы она соответствовала нашему прецеденту. Система будет получать и обрабатывать данные из всех источников, и каждый из них будет иметь разные наборы полей.Субобъект Freeform в json-schema

Хотя продукт обработки имеет одну и ту же схему, мы хотим также включить ввод в схему для справочной цели. Например, с учетом

{ 
    "foo": "bar" 
    "bar": "baz" 
} 

Продукт переработки является

{ 
    "original": { 
     "foo": "bar", 
     "bar": "baz" 
    } 
    "processed": { 
     "stdFieldA": "bar", 
     "stdFieldB": "baz" 
    } 
} 

Предполагая, что для каждого входа из различных источников, мы в конечном итоге, stdFieldA и stdFieldB. Таким образом, объект схемы ответа мы имеем

type: object 
properties: 
    processed: 
     type: object 
     properties: 
      stdFieldA: 
       type: string 
      stdFieldB: 
       type: string 

теперь, когда мы имеем processed субобъекта определены, мы можем определить произвольный объект для исходного входа, так что этот объект из другого источника действует

{ 
    "alpha": "lorem", 
    "beta": "ipsum" 
} 

Если я не получу никакого ответа на этот вопрос, моим решением проблемы будет сохранение исходного ввода в виде строки (преобразование исходного ввода в строку JSON).

ответ

2

type: object без properties описывает объект свободной формы. Таким образом, схема ответа может быть:

type: object 
properties: 
    original: 
     type: object 
    processed: 
     type: object 
     properties: 
      stdFieldA: 
       type: string 
      stdFieldB: 
       type: string 
Смежные вопросы