2017-12-26 10 views
0

Ich versuche, eine LinkedHashMap zu einem bestimmten Objekt zu serialisieren. Aber meine Eigenschaft in diesem Objekt hat einen anderen Namen. Wie kann ich diese Eigenschaften richtig zuordnen? Ich habe versucht, @ JsonValue und @ JsonProperty Annotationen, aber meine Eigenschaft Wert für die Klasse immer Null.Serialize Karte zu Objekt mit Alias ​​in Objekteigenschaft

Ich habe diese Karte:

Map<String, String> myMap = new LinkedHashMap<>(); 
myMap.put("user_name", "John Doe"); 

Und ich möchte dieses Objekt serialisiert:

@Data 
@AllArgsConstructor 
@NoArgsConstructor 
public static class DummyUser { 
    private String userName; 
} 

Ich versuche, diesen Ansatz zu verwenden:

ObjectMapper mapper = new ObjectMapper(); 
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); 
mapper.convertValue(myMap, DummyUser.class); 

Antwort

0

Sie Sie müssen eine Mapping-Konfiguration auf Ihr POJO anwenden, insbesondere auf die Setter-Methode von userName:

@Data 
@AllArgsConstructor 
@NoArgsConstructor 
public static class DummyUser { 
    private String userName; 

    @JsonProperty("user_name") 
    public setUserName(String un) {...} 
} 

ObjectMapper mapper = new ObjectMapper(); 

Map<String, String> myMap = new LinkedHashMap<>(); 
myMap.put("user_name", "John Doe"); 

mapper.readValue(myMap, DummyUser.class); 
+1

Es war mein Fehler mit der @ JsonProperty. In meinem ersten Test verwendete ich den Import "com.fasterxml.jackson.annotation.JsonProperty" und habe nicht funktioniert, jetzt habe ich Ihre Lösung mit dem Import "org.codehaus.jackson.annotate.JsonProperty" verwendet und es hat funktioniert! Vielen Dank! –