Я создал простой метод 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;
}
В приведенном выше коде requestMap преобразуется в JSON строку с использованием writeValueAsString
, а затем используется классом RequestDTO с использованием readValue
.
Вопрос: у меня несколько 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);
Я хочу, чтобы класс POJO был разрешен на основе ключей JSON, прочитанных из requestMap, или если есть лучший способ однозначно определить, какой класс должен использоваться для отображения.