2017-07-11 2 views
2

Ich benutze Swagger, um Klassen in Java und Type-Skript zu generieren. Ich habe Probleme beim Definieren der map-Eigenschaft mit einer Liste von Objekten als Wert. Ich habe versucht, zu definieren, wie folgt:Wie definiert man HashMap <String, Liste <Object>> Eigenschaft in Swagger Yml?

DataMap 
type: object 
additionalProperties: 
#type: array -- This config does not work. 
    $ref: '#/definitions/Data' 

Oberhalb yml Definition folgenden Code in Java generiert:

class DataMap extends HashMap<String, Data> { 
    } 

Wie kann ich yml konfigurieren Schlüssel mit Liste von Daten zu generieren? so etwas wie folgende Klasse:

class DataMap extends HashMap<String, List<Data>> { 
     } 

oder

class DataInfo { 
    Map<String, List<Data>> dataMap; 
    } 

Ist dies möglich mit Prahlerei 2.0? Ich denke darüber nach, eine andere DataList-Klasse zu definieren, die ArrayList erweitert und diese Klasse dann als Wert für Map verwendet.

-------------- UPDATE & ANTWORT -----------

Dank @nickb

Ich bin mit swagger- codegen-maven-Plugin-Version 2.2.1 und yml Definition Karte zu erzeugen, wie folgt:

DataInfo 
    type: object 
    properties: 
    dataMap: 
    type: object 
    additionalProperties: 
     type: array 
     items: 
      $ref: '#/definitions/Data' 

Antwort

2

ich bin mit Swagger codegen v2.1.6 mit den folgenden Modelldefinitionen:

foo: 
    properties: 
     baz: 
     type: string 
    bar: 
    properties: 
     map: 
     type: object 
     additionalProperties: 
      type: array 
      items: 
      $ref: '#/definitions/foo' 

Dies erzeugt eine Bar Java-Klasse mit dem folgenden Feld:

Map<String, List<Foo>> map = new HashMap<String, List<Foo>>(); 

Wenn Sie ein anderes Verhalten entdecken, liefern Sie in eine Regression gestolpert könnte. Versuchen Sie, frühere Versionen zu testen, oder sehen Sie speziell, ob 2.1.6 dieses Modell korrekt generiert.

+1

Awesome, ich werde meine Swagger-Bibliothek überprüfen. Danke @nickb – nayakam

+0

Die neueste stabile Version von Swagger Codegen ist 2.2.2: https://github.com/swagger-api/swagger-codegen/releases. Bitte beachten Sie, dass Sie auf die neueste stabile Version aktualisieren müssen, um Fehlerbehebungen und Verbesserungen zu erhalten. –

+0

@nickb Vielen Dank, nachdem Sie die Definition geändert haben, wie Sie vorgeschlagen haben, funktioniert es. – nayakam

Verwandte Themen