3

こんにちは。

json 文字列をドメイン固有のオブジェクトに逆シリアル化するように Jackson Object Mapper を構成しようとしています。以下のようにオブジェクトマッパーを構成しました

ObjectMapper mapper = new ObjectMapper();
mapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, "remoteClass");

私のドメインでは、json 文字列には、対応する実際の JAVA POJO (正規名) を示す remoteClass プロパティが含まれている必要があります。上記の構成は、抽象型の解決に役立ちます

ただし、上記の場合、 java.util.Lists は抽象型であるため、適切に逆シリアル化されません。

次のエラーが表示されます Unexpected token (START_OBJECT), expected VALUE_STRING: need JSON String that contains type id (for subtype of java.util.List)

この場合の Object Mapper は、デフォルトの collectionFallBacks に頼っていません。

次のような問題を克服するために、他の構成を試しました

SimpleModule module = new SimpleModule("test", Version.unknownVersion());
module.addAbstractTypeMapping(List.class, ArrayList.class);
mapper.registerModule(module);

しかし、これらは他の問題を引き起こします。

誰かが同じことで私を助けてくれますか。私は今これに何日も費やしました。これはジャクソンの制限のようです。間違っていたら訂正して

4

1 に答える 1

1

私は最近この問題に直面しました。プロパティを次のように定義する代わりに、POJO でこれを試してください。

List<SimpleModule> 

次のように定義します

List<Object>.
于 2013-10-08T18:34:24.823 に答える