2014-11-26 27 views
12

'dan kaldıramaz. Json isteğimi modelime ayrıştırmaya çalışıyorum. Bu kodda neyin yanlış olduğunu bilmiyorum. Json sözdizimi, Java modelinde de doğru ve ek açıklamaları gösterir.Json Mapping İstisnası, örneğini START_ARRAY jetonu

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of ParametersType out of START_ARRAY token 
(through reference chain: Document["parameters"]) 

Java modeli: Ben gibi hata alıyorum neden bilmiyorum

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Document { 

    @XmlElement(required = true) 
    @JsonProperty("templateId") 
    protected String templateId; 

    @JsonProperty("parameters") 
    @XmlElement(required = true) 
    protected ParametersType parameters; 

    @JsonProperty("documentFormat") 
    @XmlElement(required = true) 
    protected DocumentFormatType documentFormat; 

...} 

@JsonIgnoreProperties(ignoreUnknown = true) 
public class ParametersType { 

    @JsonProperty("parameter") 
    protected List<ParameterType> parameter; 

...} 

@JsonIgnoreProperties(ignoreUnknown = true) 
public class ParameterType { 

    @XmlElement(required = true) 
    @JsonProperty("key") 
    protected String key; 

    @XmlElement(required = true) 
    @JsonProperty("value") 
    @XmlSchemaType(name = "anySimpleType") 
    protected Object value; 

    @JsonProperty("type") 
    @XmlElement(required = true, defaultValue = "STRING_TYPE") 
    protected ParamType type; 

....} 

Json kodu: Tek bir nesne olarak parameters bildirdikten

{ 
    "templateId": "123", 
    "parameters": [ 
     { 
      "parameter": [ 
       { 
        "key": "id", 
        "value": "1", 
        "type": "STRING_TYPE" 
       }, 
       { 
        "key": "id2", 
        "value": "12", 
        "type": "STRING_TYPE" 
       } 
      ] 
     } 
    ], 
    "documentFormat": "PDF" 
} 
+0

Yukarıdaki kodda parametre dizisi var. JSON ek açıklaması doğru değerleri nasıl alacağını anlayacaktır? Nasıl bahsedilir? – Pavan

cevap

15

ama JSON belgenizde birden fazla nesne dizisi olarak dönüyorsunuz.

Modeliniz şu anda bir ParametersType nesne olarak parametreler düğümünü tanımlar:

{ 
    "templateId": "123", 
    "parameters": { 
      "parameter": [ 
       { 
        "key": "id", 
        "value": "1", 
        "type": "STRING_TYPE" 
       }, 
       { 
        "key": "id2", 
        "value": "12", 
        "type": "STRING_TYPE" 
       } 
      ] 
     }, 
    "documentFormat": "PDF" 
} 

Ama JSON:

@JsonProperty("parameters") 
@XmlElement(required = true) 
protected ParametersType parameters; 

Bu modeli nesne aşağıdaki gibi görünen bir JSON dokümanı beklediği anlamına gelir belge, ParametersType nesnesinin bir dizi döndürüyor. Yani ParametersType nesneleri listesi olarak modelinizi değiştirmeniz gerekir:

@JsonProperty("parameters") 
@XmlElement(required = true) 
protected List<ParametersType> parameters; 
Eğer ParametersType nesneleri dizisini geri dönüyor olması ayrıştırıcı START_ARRAY dışına bir nesneyi serisini mümkün değil varlık hakkında şikayet neden

. Tek bir nesneyle bir düğüm arıyordu, ancak JSON'unuzda bir dizi nesne bulundu.

+0

Haklısınız! Bu doğru soru. Json isteğimi değiştirdim. Çok teşekkürler –

+0

Sorun değil, yardımcı olmaktan mutluluk duyuyoruz! – gregwhitaker