我正在开发一个已经使用XML序列化的项目,所以我需要一个优雅的解决方案来支持JSON,重用JAXB注释。
有人可以推荐一些能够很好地重用JAXB注释的Java JSON库吗? 轻量级库是首选。
答案 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)
答案 2 :(得分:2)
Apache Jersey拥有不错的JAXB支持。我建议你看一下有关其内部related post
的以下讨论