创建用于在多个POJO类中反序列化的通用ObjectMapper方法

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

我创建了一个简单的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类,或者是否有更好的方法来唯一地标识要用于映射的类。

java jackson objectmapper
2个回答
0
投票

您将Map序列化为JSON对象,然后将此JSON对象解析为Java类实例。这看起来有点复杂。

如果要根据映射中的键决定实例化哪个Java类,则可以手动实现此逻辑。查看地图的键,确定要创建其实例的Java类,然后将地图传递给该类的构造器,该构造器填充成员。]

不需要JSON和Jackson。


-5
投票

[巴基斯坦最大的在线购物Store,可一站式提供数千种产品,如平板电脑,健康,时尚,美容等。

© www.soinside.com 2019 - 2024. All rights reserved.