2017-01-12 2 views
0

Ich zeichne eine API-Dokumentation mit swagger.io und versucht, es zu unserem Anwendungsfall passen. Das System wird Daten von allen Quellen empfangen und verarbeiten, und sie würden jeweils unterschiedliche Gruppen von Feldern haben.Freeform-Unterobjekt in JSON-Schema

Während das Produkt der Verarbeitung dasselbe Schema hat, möchten wir die Eingabe auch als Referenz in das Schema aufnehmen. Zum Beispiel gegeben

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

Das Produkt der Verarbeitung

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

aus verschiedenen Quellen für jeden Eingang Unter der Annahme ist, haben wir am Ende nach oben und stdFieldAstdFieldB aufweisen. So ist die Antwort Schema-Objekt haben wir

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

jetzt, dass wir den processed subobject definiert, können wir ein Freiform-Objekt für den ursprünglichen Eingang zu definieren, so dass dieses Objekt aus einer anderen Quelle kommt gültig ist

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

Wenn ich keine Antwort darauf bekomme, würde ich die ursprüngliche Eingabe als String speichern (wandle die ursprüngliche Eingabe in JSON-String um).

Antwort

2

type: object ohne properties beschreibt ein Freiformobjekt. So kann das Antwortschema lauten:

type: object 
properties: 
    original: 
     type: object 
    processed: 
     type: object 
     properties: 
      stdFieldA: 
       type: string 
      stdFieldB: 
       type: string 
Verwandte Themen