2016-07-04 10 views
1

Ich würde JSON String und Array zu einer Java-Liste zuordnen. Die Java-Klasse ist wie folgt.Jackson Json Bind String und Array zu Liste <String> innerhalb einer Karte

public class MyDTO { 

    private String identifier; 


    @JsonFormat(with=Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) 
    private Map<String, List<String>> parameters; 

    public String getIdentifier() { 
     return identifier; 
    } 
    public void setIdentifier(String identifier) { 
     this.identifier = identifier; 
    } 
    public Map<String, List<String>> getParameters() { 
     return parameters; 
    } 
    public void setParameters(Map<String, List<String>> parameters) { 
     this.parameters = parameters; 
    } 

} 

Ich möchte, dass die beiden folgenden JSON-Beispiele der obigen Java-Klasse korrekt zugeordnet werden.

// sample1

{ "identifier": "myIdentifier", "Parameter": { "param1": "value"}}

// sample2

{"identifier": "myIdentifier", "Parameter": { "param1": ["Wert1", "Wert2"]}}

Ich habe mit ACCEPT_SINGLE_VALUE_AS_ARRAY für die Map Eigenschaft versucht, aber ich denke, es ist an der inneren Liste ist nicht

Alle Lösungen

angewendet zu werden?

Danke.

Antwort

0

@JsonFormat ist nicht die entsprechende Anmerkung zum Konfigurieren der Deserialisierung dieser Art. Die anmerkungenbasierte POJO-Konfiguration liefert nicht das korrekte Ergebnis. Akzeptieren Sie stattdessen die rohe JSON-Zeichenfolge, und deserialisieren Sie sie später mit objectmapper mit der erforderlichen Konfiguration

String json1 = "{ \"identifier\": \"myIdentifier\", \"parameters\":{ \"param1\": \"value\" } }\n"; 
String json2 = "{ \"identifier\": \"myIdentifier\", \"parameters\":{ \"param1\": [\"value1\", \"value2\"] } }"; 
ObjectMapper mapper = new ObjectMapper(); 
//mapper.enable(DeserializationConfig.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY); 
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); 
try { 
    MyDTO obj1 = mapper.readValue(json1, MyDTO.class); 
    MyDTO obj2 = mapper.readValue(json2, MyDTO.class); 
}catch (Exception e){ 
    // handle 
} 
Verwandte Themen