0
使用Jackson,我將一個對象序列化爲JSON。 JSON序列化的父對象內部是一個抽象類的某個子類型的對象。使用jackson處理json反序列化中的缺失類
@JsonTypeInfo(
use = JsonTypeInfo.Id.CLASS,
include = JsonTypeInfo.As.PROPERTY,
property = "@class")
public abstract class AbstractSupertype{...}
public class ActualSerializedSubObject extends AbstractSypertype{...}
我的對象圖會再看看像
Parent object
|-> ChildObject
|->ActualSerializedSubObject (Or some other subtype of AbstractSupertype)
的問題是,對於各種OSGi相關的原因,具體亞型和對象是使用序列化,並不總是可用時,它就是後來的反序列化爲一個對象。 當傑克遜正確地拋出異常時com.fasterxml.jackson.databind.JsonMappingException
。
我想要的是,對於這個特定的領域,當類未找到時,不會拋出異常,但該字段被設置爲null,並且允許解析繼續。該對象的任何剩餘的json應該被丟棄,並替換爲null。
Parent object
|-> ChildObject
|->null (No exception is thrown, the object is set set null)
這是可能的,以及如何?
我猜我還有另一個問題。我已將FAIL_ON_INVALID_SUBTYPE和FAIL_ON_UNRESOLVED_OBJECT_IDS設置爲false,但仍然收到錯誤com.fasterxml.jackson.databind.JsonMappingException:無效的類型ID'that.subtype.which.is.no.lhere.There' –
您是否確定這些選項是什麼被應用於正確的映射器? –
只有一個映射器,所以我儘可能的確定。我應該說,我通過jsonMapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.NON_FINAL,「class」)使用類名解析子類型。雖然我不知道這是否有任何區別。 –