我创建了一个简单的ObjectMapper方法,用于将地图反序列化为DTO类。见下:
RequestDTO requestDTO;
public static requestDTO deserializeRequestBody(HashMap<String,Object> requestMap) {
try {
requestDTO = objectMapper.readValue(objectMapper.writeValueAsString(requestMap), RequestDTO.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return requestDTO;
}
在上面的代码中,使用writeValueAsString
将requestMap转换为JSON字符串,然后使用readValue
将其由RequestDTO类使用。
问题:我有多个RequestDTO类(POJO),并且我想使用相同的ObjectMapper(如上所述)。我希望该映射器解析要映射到哪个POJO类,而无需我为每个类都明确地编写它,例如:
//Don't want to do this
objectMapper.readValue(objectMapper.writeValueAsString(requestMap), RequestDTO1.class);
objectMapper.readValue(objectMapper.writeValueAsString(requestMap), RequestDTO2.class);
objectMapper.readValue(objectMapper.writeValueAsString(requestMap), RequestDTO3.class);
我希望基于从requestMap读取的JSON键来解析POJO类,或者是否有更好的方法来唯一地标识要用于映射的类。
您将Map
序列化为JSON对象,然后将此JSON对象解析为Java类实例。这看起来有点复杂。
如果要根据映射中的键决定实例化哪个Java类,则可以手动实现此逻辑。查看地图的键,确定要创建其实例的Java类,然后将地图传递给该类的构造器,该构造器填充成员。]
不需要JSON和Jackson。
[巴基斯坦最大的在线购物Store,可一站式提供数千种产品,如平板电脑,健康,时尚,美容等。