我有一张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")));
现在我正在考虑以下两种解决方案。
解决方案1:
我实现了getUpdatedValueFor(String val)
函数,该函数将使用正则表达式根据格式确定类型并更改map中的类型。
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
而不是将其转换为日期格式?