我正在尝试为eclipselink的JSON to JAXB对象功能做一个简单的测试。我最初计划使用moxy来生成json,然后再次使用它来封送到对象,但是尝试设置eclipselink.media-type和eclipselink.json.include-root属性都会抛出PropertyException。我确定这是因为我设置了错误的东西。
下面是我的主方法:(我有一个包moxyTest,它有一个具有两个字符串值的Foo类)
JAXBContext jc = org.eclipse.persistence.jaxb.JAXBContextFactory
.createContext(new Class[] { moxyTest.Foo.class }, null);
Marshaller marsh = jc.createMarshaller();
Foo firstObject = new Foo("value1", "value2");
marsh.setProperty("eclipselink.media-type", "application/json");
marsh.marshal(firstObject, System.out);因为我显式地指定了eclipselink文件,所以我没有费心去处理jaxb.properties文件,但是我也尝试添加一个文件,但是它没有做任何事情。奇怪的是,它并没有抛出propertyNotFoundException,而只是抛出了一个普通的PropertyException。
话虽如此,顺便说一句,我知道moxy有object->xml和object-> json,有没有一种快速的方法可以直接json->xml或者反之亦然?
发布于 2013-07-13 04:37:10
只要您使用的是EclipseLink 2.4.0或更新版本,您的代码就会按原样工作:
域模型(Foo)
package moxyTest;
import javax.xml.bind.annotation.*;
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo {
private String a;
private String b;
public Foo() {
}
public Foo(String a, String b) {
this.a = a;
this.b = b;
}
}演示
package moxyTest;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = org.eclipse.persistence.jaxb.JAXBContextFactory
.createContext(new Class[] { moxyTest.Foo.class }, null);
Marshaller marsh = jc.createMarshaller();
Foo firstObject = new Foo("value1", "value2");
marsh.setProperty("eclipselink.media-type", "application/json");
marsh.marshal(firstObject, System.out);
}
}输出
{"foo":{"a":"value1","b":"value2"}}https://stackoverflow.com/questions/17623532
复制相似问题