ジャクソンでは、すべてのカスタムオブジェクトのタイプ情報を含めたいと思います。注釈なしでこれを達成するために、私は使用しています
OBJECT_MAPPER.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, "@Ketan");
動作していますが、コンテナ自体のようにList
、のタイプ情報も含まれています。Map
Collection
Animal
、、および階層Dog
の標準的な例を示します。Cat
Zoo
class Zoo {
List<Cat> cats;
Dog dog;
public Dog getDog() {
return dog;
}
public void setDog(Dog dog) {
this.dog = dog;
}
public List<Cat> getCats() {
return cats;
}
public void setCats(List<Cat> cats) {
this.cats = cats;
}
}
ここでは、2つのカスタムオブジェクトとがCat
ありDog
ます。それらだけのタイプ情報を含めたいのですが、コンテナーList
(私の場合)も含めています。
シリアル化によって取得したJSON文字列を以下に示します。
{
"@Ketan": "com.csam.wsc.enabling.core.codec.json.test.Zoo1",
"cats": [
// This line contains the issue //
"java.util.ArrayList",
[
{
"@Ketan": "com.csam.wsc.enabling.core.codec.json.test.Cat",
"name": "animalName",
"likesCream": true,
"lives": 10
},
{
"@Ketan": "com.csam.wsc.enabling.core.codec.json.test.Cat",
"name": "animalName",
"likesCream": true,
"lives": 10
}
]
],
"dog": {
"@Ketan": "com.csam.wsc.enabling.core.codec.json.test.Dog",
"name": "animalName",
"barkVolume": 0.0
}
}
java.util.ArrayList
JSON文字列で強調表示したものを除いて、すべてが問題ありません。そのようなコンテナタイプの情報は必要ありません。
TypeResolverBuilder
オーバーライドやカスタマイズなしでこれを達成するために、上記のAPIレベル自体で簡単なサポートはありますか?