我有一個Java Spring REST API,它在POST請求的正文中接收一個JSON字串。JSON字串很大,它包含多個嵌套物件。
在收到 POST 請求時,我將字串轉換為 DTO 物件。
問題
其中一個嵌套物件包含一個鍵startDate,它沒有被正確地反序列化。
startDate物件的值是:
"startDate"。1622746800000
我試著用Jackson以及Gson對字串進行反序列化,但它們都無法正確決議startDate。
使用Gson時拋出的例外:
java.text.ParseException。無法決議的日期:"1622746800000"
。
如果我把startDate作為null傳遞,一切都很正常--字串被正確轉換為DTO物件。
問題
有什么想法可能是導致這個問題的原因嗎?我怎樣才能解決它呢?
P.S.
P.S. 代碼: 以下是決議在請求正文中收到的字串的代碼: 我也試過用 上面的值在序列化后變成了。 uj5u.com熱心網友回復: 在我的理解中, 對于Jackson,你可以這樣做,
請注意,它的ObjectMapper的
標籤: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)。
1622746800000,這就是我試圖去序列化的東西。
Gson在默認情況下不能去序列化紀元時間。但是Jackson可以。ObjectMapper mapper = new ObjectMapper()。
MyDTOClass evData = mapper.readValue(evDataJsonStr,MyDTOClass.class)。
readValue方法不是convertValue方法

