2017-02-21 63 views
1

我已經標註爲領域的典範:傑克遜JsonMappingException:無效的類型ID

@JsonTypeInfo(use = CLASS) 
private Object dudClass; 

的主要問題是,當我嘗試反序列化這個對象,我沒有在classpath中這個dudClass比如我將會收到一個異常:

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

難道忽略這個異常是否簡單嗎?我不想忽略序列化/反序列化,因爲我需要在不同的模塊中使用它。我只有兩個客戶端:一個在類路徑中有DudClass,另一個在沒有該類的情況下。

+2

你有沒有試過@JsonIgnore? – Coder

+0

嘗試使用瞬態。 –

+0

@Coder如果我使用JsonIgnore我將無法序列化/反序列化該字段,我? –

回答

1

這可能不是一個完美的解決方案,但這是一個解決方法。您可以使用JsonAnyGetterJsonAnySetter的其他屬性,而不是在您的POJO中使用dudClass。你需要從你的父類中刪除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)和對象內容作爲值。您只需查看Map是否存在dudClass鍵即可。

讓我知道如果這不能解決您的問題或需要澄清!