哪些Java JSON库可以很好地重用JAXB注释?

时间:2011-09-06 11:27:23

标签: java json jaxb

我正在开发一个已经使用XML序列化的项目,所以我需要一个优雅的解决方案来支持JSON,重用JAXB注释。

有人可以推荐一些能够很好地重用JAXB注释的Java JSON库吗? 轻量级库是首选。

3 个答案:

答案 0 :(得分:4)

注意:我是EclipseLink JAXB (MOXy)负责人,也是JAXB(JSR-222)专家组的成员。

查看添加到EclipseLink JAXB(MOXy)的JSON绑定。我们不仅利用JAXB注释,还利用运行时API:

package blog.json.twitter;

import java.util.Date;    
import javax.xml.bind.*;
import javax.xml.transform.stream.StreamSource;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(SearchResults.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        unmarshaller.setProperty("eclipselink.media.type", "application/json");
        StreamSource source = new StreamSource("http://search.twitter.com/search.json?q=jaxb");
        JAXBElement<SearchResults> jaxbElement = unmarshaller.unmarshal(source, SearchResults.class);

        Result result = new Result();
        result.setCreatedAt(new Date());
        result.setFromUser("bdoughan");
        result.setText("You can now use EclipseLink JAXB (MOXy) with JSON :)");
        jaxbElement.getValue().getResults().add(result);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.setProperty("eclipselink.media.type", "application/json");
        marshaller.marshal(jaxbElement, System.out);
    }

}

除了JAXB注释外,还支持MOXy扩展(例如@XmlPath),这使得更容易拥有一个可用于XML和JSON的注释模型:

答案 1 :(得分:3)

我会使用Jackson。它似乎具有良好的JAXB支持。

<强>参考:

答案 2 :(得分:2)

Apache Jersey拥有不错的JAXB支持。我建议你看一下有关其内部related post

的以下讨论