使用对象 属性 中的别名将映射序列化为对象

Serialize Map to Object with alias in object property

我正在尝试将 LinkedHashMap 序列化为特定对象。但是我在那个对象中的 属性 有一个不同的名字,我怎样才能以正确的方式匹配这些属性? 我尝试使用 @JsonValue 和 @JsonProperty 注释,但我在 class 上的 属性 值始终为空。

我有这张地图:

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);

您需要将映射配置应用到您的 POJO,特别是在用户名的 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);