2017-07-11 12 views
2

私はswaggerを使ってJavaとTypeスクリプトでクラスを生成しています。 マッププロパティを値としてオブジェクトのリストで定義する際に問題があります。HashMap <String、List <Object>>プロパティをswagger ymlに定義する方法は?

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

Javaでコードを次のように生成YML定義上:私は次のように定義しようとしました

class DataMap extends HashMap<String, Data> { 
    } 

にはどうすればデータのリストでキーを生成するためにYML設定することができますか?以下のクラスのようなもの:

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

または

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

はこれが闊歩2.0で可能ですか?私はArrayListを拡張する別のDataListクラスを定義し、このクラスをMapの値として使用することを考えています。

-------------- UPDATE & ANSWER -----------

おかげ

@nickb私はswagger-を使用しています

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

答えて

2

を、私は、次のモデル定義を闊歩するコード生成のv2.1.6を使用しています:

次のようにコード生成 - のmaven-pluginのバージョン2.2.1とYMLの定義は、マップを生成します

これは、次のフィールドでBar Javaクラスを生成します:あなたは別の行動を見ている場合は

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

、あなたは回帰につまずいていたかもしれません。以前のバージョンをテストするか、2.1.6でこのモデルが正しく生成されているかどうかを確認してください。

+1

すごく、私は笑いのライブラリをチェックします。 thanks @nickb – nayakam

+0

Swagger Codegenの最新の安定版は、2.2.2です:https://github.com/swagger-api/swagger-codegen/releases。バグの修正や強化を行うには、最新の安定版にアップグレードすることを検討してください。 –

+0

@nickbありがとう、あなたがそれが動作することを提案として定義を変更した後。 – nayakam

関連する問題