2017-12-26 40 views
0

LinkedHashMapを特定のオブジェクトにシリアル化しようとしています。しかし、そのオブジェクトの私のプロパティは、別の名前を持っている、私はどのようにこれらのプロパティを正しい方法で一致させることができますか? @ JsonValueアノテーションと@JsonPropertyアノテーションを使用しようとしましたが、クラスのプロパティ値は常にnullです。オブジェクトへのエイリアスを使用したオブジェクトへのマップのシリアル化

私はこのマップを持っている:

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

を、私は、このオブジェクトにシリアライズしたい:

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

私はこのアプローチを使用しようとしている:

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

答えて

0

あなたはPOJOに、特にuserNameのsetterメソッドでマッピング設定を適用する必要があります:

@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

@JsonPropertyは間違いでした。私の最初のテストでは、私はインポート "org.codehaus.jackson.annotate.JsonProperty"であなたのソリューションを使用し、働いた "com.fasterxml.jackson.annotation.JsonProperty"とdid'nを使用していた、それは働いた!ありがとう! –

関連する問題