基本上,我有一些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。请尝试并确认它是否可以解决您的问题。谢谢 :)

10-01 02:04