Eclipselink MOXy eclipselink,媒体类型propertyException,有关设置的帮助

时间:2013-07-12 20:30:46

标签: eclipselink moxy

我正在尝试对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的快速方法,反之亦然?

1 个答案:

答案 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"}}