首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Genson可以处理对象上的泛型嵌套字段吗?

Genson可以处理对象上的泛型嵌套字段吗?
EN

Stack Overflow用户
提问于 2013-02-05 08:11:00
回答 2查看 880关注 0票数 0

基本上,我有一些Java对象,我希望尽可能少地将它们序列化为JSON。现在我用的是Tomcat,Jersey和Genson。

我发现这样的东西在Genson中不起作用(当然,这是一个玩具示例):

代码语言:javascript
复制
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;
}

以上代码的输出如下:

代码语言:javascript
复制
{"set1":["1","11"],"set0":["0"],"set2":["2","222","22"]}
{"mapOfSets":{"empty":false}}

Genson的好处是我只是把它放到了我的WebContent文件夹中,然后它就被用来代替与Jersey捆绑在一起的东西--不需要额外的配置。如果有一种非常简单的方法可以让像上面这样的对象序列化到JSON,而不必为每个模式编写某种类型的转换器,我很乐意使用Jersey而不是Genson,但是Genson到目前为止还没有让我失望。

那么--我如何利用Genson来正确地进行序列化--或者什么是能够轻松处理这类事情的库呢?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 09:41:31

我使用Guice来处理我的依赖注入需求,这就是为什么我很难让Jackson与我的Jersey项目集成在一起。由于Genson没有做我想要的事情,我决定再次尝试Jackson。我试着改变一些东西,直到它起作用了,在SO和Google上尝试了不同的建议。

现在,下面的代码给出了我的Sandbox项目中预期的输出:

代码语言:javascript
复制
ObjectMapper mapper = new ObjectMapper();
AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
mapper.getSerializationConfig().setAnnotationIntrospector(introspector);
String jsonData = mapper.writeValueAsString(mc);
System.out.println(jsonData);

代码语言:javascript
复制
{"mapOfSets":{"set1":["1","11"],"set0":["0"],"set2":["2","222","22"]}}
票数 0
EN

Stack Overflow用户

发布于 2013-02-05 16:53:36

我是Gensons的作者。我刚刚检查了一下,这是一个bug,泛型在Genson中工作得很好,除了这个特殊的情况...如果你可以等到明天,我会在今晚推出一个新的版本,其中包含修复和一些次要的新功能。完成后,我会更新我的答案。

编辑错误更正和版本0.94推向公共maven存储库,它应该在几个小时内最多可用。以下是一些changes in this release。请尝试并确认它是否解决了您的问题。谢谢:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14698055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档