2013-06-18 34 views
3

我使用EclipseLink 2.5 MOXy for JAXB服務在Glassfish 3上運行Blaise Doughans blog的示例(我找不到它了)。Unmarshal單個元素列表失敗

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Company { 

    @XmlElementWrapper(name="employees") 
    @XmlElement(name = "employee", type=Employee.class) 
    private List<Employee> employees; 
} 

@XmlAccessorType(XmlAccessType.FIELD) 
public class Employee { 
    private String id; 
    private String name; 
} 

我增加了一些註解類,以產生期望的JSON結構:

{ 
    "employees": [ 
    { 
     "id": "1", 
     "name": "Jane Doe", 
     "report": [] 
    } 
    ] 
} 

當我嘗試解組此JSON是可悲的失敗,有一個空的員工列表返回一個對象。
將另一個元素添加到JSON列表或刪除@XmlElementWrapper作品。
但我想要的關鍵元素被命名爲employees,所以我必須使用包裝註釋,或不?

編輯:

public class MyApplication extends Application { 

    @Override 
    public Set<Class<?>> getClasses() { 
     HashSet<Class<?>> set = new HashSet<Class<?>>(2); 
     set.add(MOXyJsonProvider.class); 
     set.add(Index.class); 
     return set; 
    } 

    @Override 
    public Set<Object> getSingletons() { 
     MOXyJsonProvider moxyJsonProvider = new MOXyJsonProvider(); 

     moxyJsonProvider.setAttributePrefix("@"); 
     moxyJsonProvider.setFormattedOutput(true); 
     moxyJsonProvider.setIncludeRoot(false); 
     moxyJsonProvider.setMarshalEmptyCollections(true); 
     moxyJsonProvider.setValueWrapper("$"); 
     moxyJsonProvider.setWrapperAsArrayName(true); 

     HashSet<Object> set = new HashSet<Object>(1); 
     set.add(moxyJsonProvider); 
     return set; 
    } 

} 

回答

4

我已經證實,您所看到的,並已開通了以下錯誤的問題:

UPDATE

此問題的修復已被檢入到EclipseLink 2.5.1和2.6.0流中。你可以從下面的鏈接自2013年6月19日,相應的每晚構建的修補程序:

+0

感謝。所以我可以抓住今天晚上建立固定版本? – Imperative

+1

@Imperative-我會在今天和明天解決你將能夠抓住6月19日夜間建設。它通常在早上東部時間可用。 –