我正在使用Jackson ObjectMapper
将Java Bean转换为Map
.
但是,它不是保留Date
对象,而是将其转换为Long
.
这是失败的测试用例,
@Test
public void testObjectToMapDate() {
User user = new User();
user.setDob(new Date());
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.convertValue(user, Map.class);
assertTrue(map.get("dob") instanceof Date);
}
Run Code Online (Sandbox Code Playgroud)
有一个简单的解决方案吗?
Sot*_*lis 12
默认情况下,Jackson将java.util.Date
实例序列化为数字时间戳.您可以将Jackson配置为使用文本表示
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); // it's true by default
Run Code Online (Sandbox Code Playgroud)
或提供自己的JsonSerializer
.
但是,当您进行转换时,中间JSON和目标类型中绝对没有任何内容Map
可以向Jackson表明它应该将其反序列化为Date
对象.如果没有额外的类型信息,杰克逊将使用它的默认值(总是反序列化long
,double
,String
,LinkedHashMap
).
归档时间: |
|
查看次数: |
8820 次 |
最近记录: |