基本上,我有一些Java对象要尽可能轻松地序列化为JSON。现在我正在使用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,而不必为每个模式编写某种转换器,那么我很乐意将其与Jersey而不是Genson一起使用,但是Genson并没有因此而失败缺点很大。
那么-我该如何按摩Genson以使其正确序列化-还是什么库可以轻松处理此类问题?
谢谢!
最佳答案
我是Gensons作家。我刚刚检查了一下,这是一个错误,在这种情况下,泛型在Genson中可以正常工作...
如果您可以等到明天,我将在今晚推送一个新版本,其中包含修复程序和一些次要的新功能。完成后,我将更新我的答案。
编辑错误已更正,并将0.94版本发布到了公共Maven存储库中,最多应在几个小时内可用。以下是一些changes in this release。请尝试并确认它是否可以解决您的问题。谢谢 :)