У меня есть карта JSON
, которая поступает в мою службу отдыха.
{
"creationDateTimeFrom":"2015-01-15T11:27:00:000", //DATETIME
"creationDateTimeTo":"2016-07-15T11:27:00:000", //DATETIME
"eventIndicatorCd":["MAND", "CHOS"], //LIST
"exDateFrom":"2015-01-01", //DATE
"exDateTo":"2016-01-01", //DATE
"lastUpdateDateTimeFrom":"2015-08-01T08:21:47:000", //DATETIME
"lastUpdateDateTimeTo":"2015-08-06T08:21:47:000", //DATETIME
"eventSecurityBlbTicker":["CCRO3 BS", "MSFT UW"], //LIST
"eventTypeCd":["DVCA", "DVOP"], //LIST
"statusCd":["CACS_CONF", "CACS_APPROVED"] //LIST
}
И у меня есть зарегистрированный конвертер в Spring
, который конвертирует карту в объект, и эту карту я передаю своейJPA
спецификация API
для поиска критериев.
Map<String, Object> objectMap = mapper.readValue(jsonString, Map.class);
Проблема в том, что мне нужно преобразовать дату и дату и время String
из карты в формат java.util.Date
и заменить их.Нечто похожее на ниже.
map.put("exDateFrom", convertToDate(map.get("exDateFrom")));
Теперь я думаю о 2 решениях ниже.
Решение 1:
Я реализую функцию getUpdatedValueFor(String val)
, которая будет определять тип на основе формата с помощью регулярных выражений и изменять тип в карте.map.replaceAll((key, val) -> getUpdatedValueFor(val));
Решение 2:
Map<String, Object> objectMap = mapper.readValue(jsonString, Map.class);
Не уверен, возможно ли это или нет, но во время этого преобразования, если я пропущу стандартный формат Джексона Date
черезкакой Джексон может понять его дату, и он автоматически конвертирует ее в формат java.util.Date
, как он это делает для java.util.List
, но я ничего не уточнил.
Кто-нибудь знает формат даты по умолчанию для Джексона Date
или я могу как-то сказать Джексону, если формат строки 2015-01-15T11:27:00:000
, чем преобразовать его в формат даты?