0
ジャクソンを使用して、オブジェクトをJSONにシリアル化しています。 JSON-Serialized親オブジェクト内には、抽象クラスのサブタイプであるオブジェクトがあります。jacksonを使用したjsonデシリアライゼーションでの欠落クラスの処理
私のオブジェクトグラフが、問題は、様々なOSGiの関連の理由で、特定のサブタイプとオブジェクトがで連載されたことがあり、それが後にあるときは、常に利用可能でないParent object
|-> ChildObject
|->ActualSerializedSubObject (Or some other subtype of AbstractSupertype)
ようになり
@JsonTypeInfo(
use = JsonTypeInfo.Id.CLASS,
include = JsonTypeInfo.As.PROPERTY,
property = "@class")
public abstract class AbstractSupertype{...}
public class ActualSerializedSubObject extends AbstractSypertype{...}
オブジェクトにデシリアライズされます。 その場合、ジャクソンは正しく例外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.longer.There' –
あなたはこれらのオプション右のマッパーに適用されましたか? –
マッパーが1つしかないので、私はできると確信しています。私はおそらく、私はクラス名を使用してサブタイプのためにjsonMapper.enableDefaultTypingAsProperty(ObjectMapper.DefaultTyping.NON_FINAL、 "class")を使って解決していると言わなければならない。私はそれが何か違いがあるかどうかは分かりませんが。 –