自分の複雑なシリアライザorg.apache.commons.lang3.tuple.Pair
を使わずにジャンクソンを作ることができれば、左右のオブジェクトを適切な方法で直列化することができます。だから、例えば私は、次のコードを持っている:jacksonでapacheのコモンズをシリアライズする
public class MyPairTest {
public static void main(String[] args) {
Address address1 = new Address("Axel Street 1", "London");
Address address2 = new Address("Axel Street 2", "Copenhagen");
Map<String, Pair> map = new HashMap<>();
map.put("Address", Pair.of(address1, address2));
Pair p = Pair.of(address1, address2);
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT);
try {
String serializeMapWithPair = mapper.writeValueAsString(map);
String serializePair = mapper.writeValueAsString(p);
System.out.println(serializeMapWithPair);
System.out.println(serializePair);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
Gson gson = new Gson();
System.out.println(gson.toJson(p));
}
}
そして、出力結果は次のようになります。だから、最初の二つの出力が最後にGsonであるように、私が欲しいジャクソンObjectMapperでPair
をシリアル化している
{
"Address" : {
"[email protected]" : {
"street" : "Axel Street 2",
"city" : "Copenhagen"
}
}
}
{
"[email protected]" : {
"street" : "Axel Street 2",
"city" : "Copenhagen"
}
}
{"left":{"street":"Axel Street 1","city":"London"},"right":{"street":"Axel Street 2","city":"Copenhagen"}}
Gsonの例のように結果が得られますが、jacksonとleft
とright
の部分はありません。 Gson
例私はthis jira improvement suggestionから得て、私は彼らが次のように述べていることを知っています"Commons-lang has no dependencies, so Jackson or anything similar can not be used."
しかし、ジャクソンが自分でシリアライザやこの種を作ったのかどうか疑問に思っていました。ジャクソン?または、私は単にそれをドロップし、Gsonを使用し、手動でleft
とright
部分を手動で操作して削除する必要がありますか?