2013-04-10 1 views
1

의 이상한 중첩 나는 내 수업의 다음과 같은 구조를 가지고 :: 요소

: 인스턴스가 XML에 바인딩하는 경우, 그것은 완전히 expeced로, 다음과 같습니다
@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 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" 
     } 
    ] 
} 

false 동작이나 주석 매개 변수가 누락 된 결과로 인해 발생합니까?

답변

2

참고 : 저는 EclipseLink JAXB (MOXy)이며 JAXB (JSR-222) 전문가 그룹의 구성원입니다. 다음은

당신이 wrapperAsArrayName 재산 활용하여 JSON 결합 업체로 MOXY를 사용하여이 동작을 얻을 수있는 방법입니다 자세한 내용

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; 
    } 

}