杰克逊(Jackson)指定哈希图的类型或日期格式

时间:2019-03-01 02:36:57

标签: java json jackson

我有一张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而不是将其转换为日期格式?

0 个答案:

没有答案