我正在尝试对eclipselink的JSON到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);
我没有使用jaxb.properties文件,因为我明确指定了一个eclipselink,但我也尝试添加一个,但它没有做任何事情。 奇怪的是,它不会抛出propertyNotFoundException,而只是一个普通的PropertyException。
据说,在旁注中,我知道moxy有object-> xml和object-> json,有没有直接json-> xml的快速方法,反之亦然?
答案 0 :(得分:1)
只要您使用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"}}