2013-04-27 358 views
0

我正在開發一個帶有REST風格的Web服務的GWT Web應用程序。 Web服務的結果是使用Jackson 1.8對POJO進行反序列化。它在簡單的領域工作很好。但是,它嘗試反序列化POJO列表時失敗。這是列表中的POJO反序列化:JSON列表反序列化錯誤

@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:當程序運行時

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

中, Web服務的結果工作正常,但反序列化打印此錯誤:

SEVERE:org.codeha us.jackson.map.JsonMappingException:無法將[java.util.ArrayList的實例反序列化爲START_OBJECT標記 at [Source:[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(StdDeserializationContext.java:219) 在org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:212)

任何想法??謝謝!!

回答

0

我已經解決了一個新的類!

問題是大小列表是可變的,如果它有一個元素會失敗。傑克遜的版本是1.7,它不能接受數組單值。我的解決方案是使用自定義寄存器類型的GSON,並且我使用Joshi的建議。它非常棒!謝謝!!

0

我遇到了一些類似的問題,並嘗試了以下方法,它對我有用。

創建一個包含屬性 〜公開名單ideologicoVox〜

而且使用此類引用作爲屬性的主類即〜DatosIndicadoresSVclaveDTO

+0

我已經創建了屬性List listaIdeologicoVox的新類,並且我在DatosIndicadoresSVclaveDTO中包含了此引用,但沒有工作:SEVERE:org.codehaus.jackson.map.JsonMappingException:無法反序列化組織實例.ull.etsii.client.dto.ListaIdeologicoVOXDTO out of START_ARRAY token at [Source:[email protected];行:1,列:583](通過參考鏈:org.ull.etsii.client.dto.DatosIndicadoresSVclaveDTO [「ideologicoVox」]) – 2013-04-27 11:27:22