我有一个JavaSpringRESTAPI,它在POST请求的主体中接收JSON字符串。它包含多个嵌套对象。
在收到POST请求时,我将字符串转换为DTO对象。
问题
其中一个嵌套对象包含未正确反序列化的键startDate
。startDate
对象的值为:
"startDate": 1622746800000
我尝试过使用Jackson
和Gson
对字符串进行反序列化,但它们都无法正确解析startDate
。
使用Gson
时引发异常:
java.text.ParseException:无法分析的日期:“1622746800000”
如果我将startDate
作为null
传递,则一切正常-字符串被正确地转换为DTO对象。
问题
你知道这个问题的可能原因是什么吗?我该如何解决它?
P.S.startDate
的值是作为后端响应的一部分接收的。我将在POST请求主体中向后端发送相同的响应字符串。
代码:
以下是解析在请求正文中接收到的字符串的代码:
ObjectMapper mapper = new ObjectMapper();
MyDTOClass evData = mapper.convertValue(evDataJsonStr, MyDTOClass.class);
我也尝试过使用Gson
:
Gson mapper = new Gson();
MyDTOClass evData = mapper.fromJson(evDataJsonStr, MyDTOClass.class);
这个question是类似的,但在我的情况下没有帮助。
下图显示了startDate
的格式,如Intellij IDEA的表达式计算器中所示:
序列化时,上述值变为:1622746800000
,这就是我试图反序列化的内容。
1条答案
按热度按时间ibps3vxo1#
据我所知,
Gson
在默认情况下不能反序列化纪元时间,但Jackson
可以。对于Jackson,您可以执行以下操作,
readValue
方法不是convertValue
方法 *