2017-01-12 1 views
1

swagger-codegenを使用してレストクライアントを生成していますが、問題が発生します。使用しているサービスは継承モデルを返します。swagger-codegen client:モデルにjacksonアノテーションを含める方法

public class Person 
{ 
    private List<Book> books; 
    ... 
} 

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "typeClass") 
@JsonSubTypes({ @JsonSubTypes.Type(value = Magazine.class) }) 
public class Book 
{ 
    //some prop 
} 

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "typeClass") 
public class Magazine extends Book 
{ 
    //some prop 
} 

APIモデルに継承を処理するためのjackson注釈が付いています。 APIは正常に動作します。 クライアントを生成すると、クライアントモデルにはjacksonアノテーションがありません。したがって、生成されたクライアントを使用してAPIを使用すると、Bookクラスを使用して常に逆直列化されます。マガジンクラスを「見る」ことはありません。私は、生成されたモデルが継承を処理するためのjacksonアノテーションを持っていないためだと思います。

jagson-annotationsをモデルに追加するためにswagger-codegenを設定するにはどうすればよいですか。

おかげでたくさん...

+0

[javaのコード](https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/main/java/io/swagger/codegen/)をご覧ください。言語/ JavaClientCodegen.java)と[テンプレート](https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/main/resources/Java/typeInfoAnnotation.mustache)追加のプロパティに 'jackson'プロパティを加える何かをする必要があります。最初のリンクで 'additionalProperties.put(" jackson "、" true ");を見て、それをどうやって得るかを考えてください – moondaisy

答えて

0

はのpom.xmlにプラグインの設定で

< 'ライブラリ> $ libraryValue <' /ライブラリ>

$ libraryValueを次のコード行を追加することができます依存関係でどのライブラリを使用しているかに基づいてください。 Jersey 2.x.xを使用している場合は、Jersey 1.x.xまたはJersey2を使用している場合は、ジャージ1を選択します。

ありがとうございましたhttps://stackoverflow.com/users/3695939/moondaisyあなたが提供したヘッドスタートです。

関連する問題