gpt4 book ai didi

java - ObjectMapper readValue 类型从 LinkedHasMap 转换为自定义类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:43:35 28 4
gpt4 key购买 nike

我在下面有一个语句,它为我提供了类型为 LinkedHashMap 的对象列表。

List<MyCustomClassA> optionsList = mapper.readValue(mapper.writeValueAsString(OtherClassA.getItems()), List.class);

MyCustomClassA

@Data
@Builder
public class MyCustomClassA {
private Boolean disabled;
private Boolean selected;
private String text;
private String value;
}

但是 optionsList 的值iterate 是 LinkedHashMap 的类型. OtherClassA.getItems()返回 List<MyCustomClassB>

MyCustomClassB

public class MyCustomClassB {
private String text;
private String value;
Private List<Images> imageList;
}

我希望获得什么 optionsList应该是 MyCustomClassA 类型.

最佳答案

因为您没有提供确切的 TypeReference该 json 字符串需要反序列化。由于您提供了原始类型列表 List.class objectmapper 将其视为 List<Object> .你正在反序列化 JsonArrayJsonObject , 所以 ObjectMapper转换为 List<LinkedHashMap>因为JsonObject代表并实现Map

List<MyCustomClassA> optionsList = objectMapper.readValue(mapper.writeValueAsString(OtherClassA.getItems()), new TypeReference<List<MyCustomClassA>>(){});

你还需要添加 @NoArgConstructor@AllArgConstructor关于 MyCustomClassA 的注释因为 Lombok @Data只会捆绑 @ToString 的功能, @EqualsAndHashCode , @Getter / @Setter@RequiredArgsConstructor

关于java - ObjectMapper readValue 类型从 LinkedHasMap 转换为自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58050031/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com