基本的に、できるだけ頭を悩ませずに JSON にシリアライズしたい Java オブジェクトがいくつかあります。現在、Tomcat、Jersey、Genson を使用しています。
Gensonでは、このようなものは機能しないことがわかりました(これはもちろんおもちゃの例です):
public class Main {
public static void main(String[] args) {
MyClass mc = new MyClass();
mc.mapOfSets = new HashMap<>();
Set<String> set0 = new HashSet<>();
set0.add("0");
Set<String> set1 = new HashSet<>();
set1.add("1");
set1.add("11");
Set<String> set2 = new HashSet<>();
set2.add("2");
set2.add("22");
set2.add("222");
mc.mapOfSets.put("set0", set0);
mc.mapOfSets.put("set1", set1);
mc.mapOfSets.put("set2", set2);
try {
String json1 = new Genson().serialize(mc.mapOfSets);
System.out.println(json1);
String json = new Genson().serialize(mc);
System.out.println(json);
} catch (TransformationException | IOException e) {
e.printStackTrace();
}
}
}
class MyClass {
public Map<String, Set<String>> mapOfSets;
}
上記の出力は次のとおりです。
{"set1":["1","11"],"set0":["0"],"set2":["2","222","22"]}
{"mapOfSets":{"empty":false}}
Genson の優れた点は、WebContent フォルダーにドロップしただけで、Jersey にバンドルされていたものの代わりに使用されたことです。追加の構成は必要ありませんでした。上記のようなオブジェクトを取得して JSON にシリアル化するための、スキーマごとに何らかのコンバーターを作成する必要のない非常に簡単なアプローチがある場合、Genson の代わりに Jersey でそれを喜んで使用しますが、Genson は私を失敗させませんでした。欠点が遠い。
では、Genson に適切にシリアル化するように指示するにはどうすればよいでしょうか。または、この種のことを問題なく処理するライブラリとはどのようなものでしょうか?
ありがとう!