使用object属性中的别名将Map映射到Object

问题描述 投票:0回答:1

我正在尝试将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);
java serialization jackson objectmapper
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.