2013-04-27 2 views
0

저는 RESTful 웹 서비스로 GWT 웹 애플리케이션을 개발 중입니다. 웹 서비스의 결과는 Jackson 1.8에서 POJO로 deserialize됩니다. 간단한 필드만으로도 잘 작동합니다. 그러나 POJO 목록을 deserialize하려고하면 실패합니다. 는이 실행중인 경우JSON 목록의 역 직렬화 오류

{datosIndicadoresSVclave: { 
     ... 
     "ideologicoVox":[ 
      { 
       "categoria":"1", 
       "numeroPalabra":"1", 
       "palabra":"abandonado", 
       ... 
      }, 
      { 
       "categoria":"2", 
       "numeroPalabra":"3", 
       "palabra":"hambre", 
       ... 
      } 
     ], 
     ... 
    } 
} 

:이 목록과 POJO가 역 직렬화하는 것입니다

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class DatosIndicadoresSVclaveDTO implements Serializable { 
    ... 
    @XmlAttribute 
    @JsonDeserialize(contentAs = IdeologicoVOXDTO.class) 
    public List<IdeologicoVOXDTO> ideologicoVox; 
    ... 

    //getter/setters 
} 

을 그리고 이것은

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class IdeologicoVOXDTO implements Serializable { 
    @XmlAttribute 
    private Integer numeroPalabra; 
    @XmlAttribute 
    private String palabra; 
    @XmlAttribute 
    private Integer categoria; 
    ... 

    //getter/setters 
} 

json으로는이 구조를 가지고있는 목록이 들어있는 POJO입니다 웹 서비스의 결과는 정상적으로 작동하지만 deserialize하면이 오류가 인쇄됩니다.

심각도 : org.codeha us.jackson.map.JsonMappingException : [출처 : [email protected]; (참조 체인을 통해 : org.ull.etsii.client.dto.DatosIndicadoresSVclaveDTO [ "ideologicoVox"]) at org.codehaus.jackson.map.JsonMappingException.from (JsonMappingException.java:163) org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException에서 org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException (StdDeserializationContext.java:219) 에서 (StdDeserializationContext.java:212)

어떤 생각 ?? 감사!!

답변

0

내가 해결 한에 속성으로이 클래스 참조를 사용 재산 포함 된 새 클래스를 만듭니다!

문제는 크기 목록이 가변적이며 요소가 하나라도 있으면 실패합니다. Jackson의 버전은 1.7이며, 배열의 단일 값을 받아 들일 수 없습니다. 내 솔루션은 사용자 정의 등록 유형을 가진 GSON이며 Joshi의 조언을 사용했습니다. 그것은 위대한 작품! 감사!!

0

나는 비슷한 종류의 문제에 직면했고 다음과 같은 방법으로 시도했다.

~ 공개 목록 ideologicoVox ~

그리고 메인 클래스 즉 ~ DatosIndicadoresSVclaveDTO

+0

List listaIdeologicoVox 속성을 사용하여 새 클래스를 만들었고이 설명을 DatosIndicadoresSVclaveDTO에 포함 시켰지만 작동하지 않았습니다. 심각 : org.codehaus.jackson.map.JsonMappingException : org 인스턴스를 deserialize 할 수 없습니다. START_ARRAY 토큰 중 .ull.etsii.client.dto.ListaIdeologicoVOXDTO [출처 : [email protected]; 라인 : 1, 컬럼 : 583] (참조 체인을 통해 : org.ull.etsii.client.dto.DatosIndicadoresSVclaveDTO [ "ideologicoVox"]) –