Если я создаю класс POJO и преобразую все объекты в Json, используя метод mapper.writeValueAsString()
, или позволяю Spring обработать преобразование, JavaTimeModule
используется надлежащим образом, и если в моем POJO было OffsetDateTime
, этобудет преобразован в строку типа 2018-10-16T13:49:34.564748+02:00
.
Для некоторых сценариев мне нужно использовать метод картографа T convertValue(Object fromValue, Class<T> toValueType)
и собрать ObjectNode
вручную.Метод не преобразует OffsetDateTime
объекты так же, как writeValueAsString
.
. Я создаю свой картограф Джексона следующим образом:
ObjectMapper defaultMapperObj = new ObjectMapper();
defaultMapperObj.registerModule(new GuavaModule());
defaultMapperObj.registerModule(new Jdk8Module());
defaultMapperObj.registerModule(new JavaTimeModule());
defaultMapperObj.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Используя картограф, я могу легко конвертироватьдаже перечисляет их строки Json:
mapper.convertValue(
Arrays.asList(1,2,23), JsonNode.class
)
Результат:
ArrayNode: [1,2,23]
Но если я назову это:
mappper.convertValue(OffsetDateTime.now(), JsonNode.class)
, я получу DecimalNode
:1542287917.2141993