我在下面有一条语句,该语句为我提供了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
迭代的值是LinkedHashMap
的类型。 OtherClassA.getItems()
返回List<MyCustomClassB>
MyCustomClassB
public class MyCustomClassB {
private String text;
private String value;
Private List<Images> imageList;
}
要获得optionsList
类型应该是MyCustomClassA
的我想要实现的目标。
答案 0 :(得分:1)
因为您没有提供确切的TypeReference
JSON字符串需要反序列化。由于您提供了原始类型列表List.class
,因此objectmapper将其视为List<Object>
。并且您要对JsonArray
中的JsonObject
进行反序列化,因此ObjectMapper
会转换为List<LinkedHashMap>
,因为JsonObject
表示并实现了Map
List<MyCustomClassA> optionsList = objectMapper.readValue(mapper.writeValueAsString(OtherClassA.getItems()), new TypeReference<List<MyCustomClassA>>(){});
此外,您还需要在@NoArgConstructor
上添加@AllArgConstructor
和MyCustomClassA
注释,因为龙目岛@Data
仅捆绑了@ToString
,{{1} },@EqualsAndHashCode
和@Getter / @Setter