2013-04-10 31 views
1

怪異的嵌套我得到了我的課的結構如下:使用的球衣從JSON序列化的POJO到/:元素

@XmlRootElement(name="rootClass") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class rootClass { 

    @XmlElementWrapper(name="children") 
    @XmlElement(name="child", type=childClass.class) 
    private List<childClass> children; 

    // Constructor, Getters, Setters  
} 

public class childClass { 
    private String name; 
} 

如果實例綁定到XML,它看起來像這樣,完全是expeced:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
<rootClass> 
    <children> 
     <child> 
      <name>Peter</name> 
     </child> 
     <child> 
      <name>Griffin</name> 
     </child> 
    </children> 
</rootClass> 

但在JSON它看起來像這樣:

{ 
    "children": { 
     "child": [ 
      { 
       "name": "Peter" 
      }, 
      { 
       "name": "Griffin" 
      } 
     ] 
    } 
} 

雖然我希望它看起來像這樣:

{ 
    "children": [ 
     { 
      "name": "Peter" 
     }, 
     { 
      "name": "Griffin" 
     } 
    ] 
} 

此行爲是由錯誤的註釋還是由於缺少註釋參數造成的?

回答

2

備註:我是EclipseLink JAXB (MOXy)的領導者,也是JAXB (JSR-222)專家組的成員。

下面是你如何能夠藉助wrapperAsArrayName財產得到使用莫西爲您的JSON-綁定提供此行爲:

import java.util.*; 
import javax.ws.rs.core.Application; 
import org.eclipse.persistence.jaxb.rs.MOXyJsonProvider; 

public class MyApplication extends Application { 

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

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

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

} 

更多信息

相關問題