5

我正在使用 JAXB/Jersey (1.3) 在 REST API 中将 java 转换为 json。我读了很多关于这个问题的文章,我尝试了这个解决方案,它工作了一半:

@XmlRootElement  
public class ArrayWrapper    
{  
        public List<String> list = new LinkedList<String>();  
}

和我的 ContextResolver:

@Provider  
public class JAXBContextResolver implements ContextResolver<JAXBContext> {  

        private JAXBContext context;

        private Class[] types = {ArrayWrapper.class,Wrapper.class};

        public JAXBContextResolver() throws Exception {

            MappedBuilder builder = JSONConfiguration.mapped();
            builder.arrays("list");
            builder.rootUnwrapping(true);
            this.context = new JSONJAXBContext(builder.build(), types);
}  

ArrayWrapper aw=新的 ArrayWrapper();
aw.list.add("测试");

我得到 {"list":["test"]} 所以它可以工作,但是当我将 ArrayWrapper 包装在另一个类中时它不起作用:

@XmlRootElement  
public class Wrapper  
{  
    public ArrayWrapper aw;

    public Wrapper()
    {
        aw=new ArrayWrapper();
        aw.list.add("test");
    }
}

新包装器();
我得到 {"aw":{"list":"test"}}

谁知道怎么修它?

4

1 回答 1

0

我不太确定你是否让它工作,所以我贡献了我的一点。

我最近也偶然发现了这个问题。我在 stackoverflow 中找到了一篇对我有帮助的帖子,但这篇文章更有帮助(介绍 Jackson 可能会有所帮助)。

我希望这对你也有帮助。对我来说,解决这个问题只需要 5 分钟。

于 2011-12-23T07:30:53.650 回答