2013-07-12 46 views
1

我想對於的EclipseLink的JSON到JAXB對象功能做一個簡單的測試。 我原本計劃使用MOXY生成JSON,然後再次使用它封送出去的對象,但在嘗試將eclipselink.media型和eclipselink.json.include根屬性都被扔PropertyException。 我確定這是因爲我錯了。的EclipseLink莫西的EclipseLink,媒體類型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文件麻煩,因爲我」 m明確指定了eclipselink,但我也嘗試添加一個,但它沒有做任何事情。 奇怪的是,它不是拋出propertyNotFoundException,而只是一個普通的PropertyException。

他這樣說,在一個側面說明,我知道MOXY具有對象 - > XML和對象 - > JSON,是有一個快速的方法來直接json-> XML或反之亦然?

回答

1

只要您使用的EclipseLink 2.4.0或更新您的代碼將工作是:

域模型(美孚)

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"}} 
+1

感謝,偶然有我依賴上2.3:d –