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

我下面有一个声明,它提供了 LinkedHashMap 类型的对象列表。


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

我的自定义类A


@Data

@Builder

public class MyCustomClassA {

    private Boolean disabled;

    private Boolean selected;

    private String text;

    private String value;

}

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


我的自定义类B


public class MyCustomClassB {

    private String text;

    private String value;

    Private List<Images> imageList;

}

我希望实现的目标是获得optionsListwhich should be of type MyCustomClassA。


收到一只叮咚
浏览 129回答 1
1回答

肥皂起泡泡

因为您没有提供TypeReference需要反序列化的确切 json 字符串。由于您提供了原始类型列表,List.class对象映射器将其视为List<Object>.&nbsp;并且您正在反序列化JsonArray,JsonObject因此ObjectMapper转换为List<LinkedHashMap>因为JsonObject代表并实现MapList<MyCustomClassA>&nbsp;optionsList&nbsp;=&nbsp;objectMapper.readValue(mapper.writeValueAsString(OtherClassA.getItems()),&nbsp;new&nbsp;TypeReference<List<MyCustomClassA>>(){});而且您还需要添加@NoArgConstructor和@AllArgConstructor注释,MyCustomClassA因为 lombok只会捆绑、和的@Data功能@ToString@EqualsAndHashCode@Getter / @Setter@RequiredArgsConstructor
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java