2017-02-21 5 views
1

私はとして注釈フィールドを持つモデルをしました:ジャクソンJsonMappingException:無効なタイプID

@JsonTypeInfo(use = CLASS) 
private Object dudClass; 

私は、このオブジェクトをデシリアライズしようと、私は、私はクラスパス上にこのdudClassインスタンスを持っていないときの主な問題があります

Caused by: com.fasterxml.jackson.databind.JsonMappingException: Invalid type id 'pl.erbel.DudClass' (for id type 'Id.class'): no such class found. 

この例外を無視するのは簡単な方法ですか?私は別のモジュールでこれを必要とするシリアル化/逆シリアル化の理由を無視したくない。私はちょうど2つのクライアントを持っています:1つはclasspathにDudClassを持ち、もう1つはそのクラスを持たないものです。

+2

@JsonIgnoreを試しましたか? – Coder

+0

一時的な使用をお試しください。 –

+0

JsonIgnoreを使用すると@Coderそのフィールドを直列化/逆シリアル化できないでしょうか? –

答えて

1

これは完璧な解決策ではないかもしれませんが、これは回避策です。あなたのPOJOにdudClassを持つ代わりに、JsonAnyGetterJsonAnySetterを使って追加のプロパティを利用することができます。あなたの親クラスからdudClassを削除する必要があり、これは何

@JsonIgnore 
private Map<String, Object> additionalProperties = new HashMap<String, Object>(); 

@JsonAnyGetter 
public Map<String, Object> getAdditionalProperties() { 
return this.additionalProperties; 
} 

@JsonAnySetter 
public void setAdditionalProperty(String name, Object value) { 
this.additionalProperties.put(name, value); 
} 

はデシリアライズの代わりに、それは地図に応じて、一緒に来て任意の追加のオブジェクトを設定しますdudClass毎回を設定しようとしているときで、次のコードに含まオブジェクト名をキーとして(あなたの場合はdudClass)、オブジェクトの内容を値として返します。マップにdudClassキーが存在するかどうかを確認するだけです。

これがあなたの問題に答えることができない場合、または説明が必要な場合はお知らせください。

関連する問題