2016-07-28 6 views
3

Mein Json String leeren String zur Karte ist
wie mit Karte mit jackson Mapper

{ 
    "FieldInfo":{ 
     "Field1":{ 
     "FieldName":"test1", 
     "Values":"" 
     }, 
     "Field2":{ 
     "FieldName":"test2", 
     "Values":{ 
      "test":"5", 
      "test1":"2" 
     } 
     } 
    } 
} 

Ich bin vor Problem während Kartenwerte abgelegt. In meiner JSON-Zeichenfolge sind die Werte entweder leere Zeichenfolge oder Map. Ich ordne Werte Feld in der unten genannten Variable.

@JsonProperty("Values") 
private Map<String, String> values; 

Also mein Problem leerer String ist die Abbildung mit map.it Ausnahme gibt,

com.fasterxml.jackson.databind.JsonMappingException: Can not instantiate 
value of type [map type; class java.util.LinkedHashMap, [simple type, class 
java.lang.String] -> [simple type, class java.lang.String]] from String 
value; no single-String constructor/factory method (through reference 
chain: com.test.model.ExtraInformation["FieldInfo"]->com.test.model.FieldInfo["Values"]) 

ich bereits @JsonInclude(Include.NON_NULL) verwendet haben. aber es funktioniert nicht.

+1

Sie nicht eine Karte aus einem String initialisieren, dh anstelle von '„Werte“ : "" Es müsste "Werte" sein: {} '. – Thomas

+0

Ich bekomme Json von Drittanbieter-API, so dass ich JSON-Format nicht ändern kann. –

Antwort

1

Es scheint, dass Sie versuchen, String mit Map zuzuordnen, wenn Ihr Wert eine leere Zeichenfolge ist.

@JsonProperty("Values") 
private Map<String, String> values; 

Jackson verwendet die Setter-Methode, um Werte zuzuordnen. Dieser Setter wird von Jackson erkannt und wird verwendet, wenn die Eigenschaft aus dem JSON gelesen wird. So können Sie innerhalb Ihres Setter überprüfen, ob Ihr Feld entweder eine Karte oder eine leere Zeichenfolge ist. Dafür können Sie Objekt akzeptieren. Und dann für sie überprüfen .. als Gebrüll ...

public void setValues(Object values) { 
    if(values instanceof String){ 
    this.values = null; 
    }else{ 
    this.values = (Map<String, String>) values; 
    } 
} 

Hoffnung ... Es wird Ihnen helfen ...

+0

Ohoo Danke !! Seine Arbeit .... –

Verwandte Themen