2017-07-17 2 views
2

私はdropwizard 1.1.0をJava 8の機能と併用しています。 Immutablesパッケージも使用しています。私はJSONからJava同等の利益センタ(文字列リスト)のリストを変換しようとすると、デシリアライゼーションの問題に直面しています。dropwizardの非直列化で問題が発生しました。ImmutableList <String>を文字列リストに変換できません

エラー

非具象コレクション型 [コレクション型のデシリアライザを見つけることができません。クラスcom.google.common.collect.ImmutableList、 が含ま[単純型を、クラスjava.lang.Stringで]

不変のJavaクラス

@Value.Immutable 
@JsonSerialize(as = ImmutableReconciliationInputDTO.class) 
@JsonDeserialize(as = ImmutableReconciliationInputDTO.class) 
public interface ReconciliationInputDTO extends Serializable { 

@JsonProperty("date") 
@JsonDeserialize(using = LocalDateDeserializer.class) 
@JsonSerialize(using = LocalDateSerializer.class) 
LocalDate asOfDate(); 

@JsonProperty("label") 
String label(); 

@JsonProperty("entityId") 
String entityId(); 

@JsonProperty("entityName") 
String entityName(); 

@JsonProperty("departments") 
List<String> departments(); 

Immutablesは、DTOに上記生成私dropwizardアプリケーションのブートストラップで

public final class ImmutableReconciliationInputDTO 
implements ReconciliationInputDTO { 
private final LocalDate asOfDate; 
private final String label; 
private final String entityId; 
private final String entityName; 
private final ImmutableList<String> departments; 

以下のような属性を持つ最後のクラスは、私は以下のモジュール

012を登録しています私のpom.xmlで
bootstrap.getObjectMapper().registerModule(new JavaTimeModule()); 
    bootstrap.getObjectMapper().registerModule(new Jdk8Module()); 
    bootstrap.getObjectMapper().registerModule(new ParameterNamesModule()); 

あなたはまた、ジャクソンモジュールとしてguavaを含まなければならない私の知る限り、私は私の依存関係として以下

<dependency> 
    <groupId>com.fasterxml.jackson.module</groupId> 
    <artifactId>jackson-module-parameter-names</artifactId> 
    <version>2.8.7</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jdk8</artifactId> 
    <version>2.8.7</version> 
</dependency> 
<dependency> 
    <groupId>com.fasterxml.jackson.datatype</groupId> 
    <artifactId>jackson-datatype-jsr310</artifactId> 
    <version>2.8.7</version> 
</dependency> 

答えて

3

を設定しています。それはここにある:私はすでに以前のグアバモジュールを追加しても、初期化フェーズの間に私のdropwizardアプリケーションでそれを登録した

registerModule(new GuavaModule()) 
+0

guava-module

は、彼らはまた、どのようにそれを統合する例があります。しかし、それは役に立たなかった。あなたのお勧めを投稿しようとしましたが、私は同じ問題を抱えています。 JacksonはImmutableリストを、私が想定している対応するJavaコレクションに変換することはできません。これを修正する方法がわかりません。 – megan

+1

@alice:あなたのアプリケーションにはただ一つの 'ObjectMapper'インスタンスしか含まれていませんか?あなたが実際に設定したものとは異なるものを実際に受け取っているかもしれませんか? – Henrik

関連する問題