package com.arms.util; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import lombok.AccessLevel; import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; @Slf4j @NoArgsConstructor(access = AccessLevel.PRIVATE) public final class DataSerializer { private static final ObjectMapper objectMapper = initialize(); private static ObjectMapper initialize() { return new ObjectMapper() .registerModule(new JavaTimeModule()) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); } public static T deserialize(String data, Class clazz) { try { return objectMapper.readValue(data, clazz); } catch (JsonProcessingException e) { log.error("[DataSerializer.deserialize] data={}, clazz={}", data, clazz, e); return null; } } public static T deserialize(Object data, Class clazz) { return objectMapper.convertValue(data, clazz); } public static String serialize(Object object) { try { return objectMapper.writeValueAsString(object); } catch (JsonProcessingException e) { log.error("[DataSerializer.serialize] object={}", object, e); return null; } } }