2 回答

TA貢獻1821條經驗 獲得超6個贊
由于許多映射框架無法使用泛型或繼承層次結構正確反序列化對象,因此以下內容很難看但應該是可能的
PushEvent<Offer> pushEvent = mapper.readValue(pushEventMessage.getMessage(), PushEvent.class);
String serializedOffer = mapper.writeValueAsString(pushEventMessage.getCurrent());
Offer offer = mapper.readValue(serializedOffer, Offer.class);
pushEvent.setCurrent(offer);
說明:Jackson 反序列化您的內部對象Offer,而不是像您所說的那樣反序列化,而是LinkedHashMap在將 JSON 對象讀取為 actual 之前再次將其序列化為 JSON 對象Offer。
您嘗試將 the 讀LinkedHashMap入 aOffer失敗,因為您(隱含地)使用了toString的表示來LinkedHashMap解析它不會產生有效的 JSON。
編輯 4 答案:,如果對象包含一個ZonedDateTime. 寫入和讀取時使用它:
ObjectMapper mapper = new ObjectMapper().registerModule(new JavaTimeModule());
mapper.setDateFormat(new StdDateFormat());

TA貢獻1796條經驗 獲得超10個贊
錯誤消息告訴您問題是什么:“期望雙引號開始字段名稱”。
從簡短的檢查來看,您讀取 json 字符串的代碼看起來是正確的,因此請確保為其提供有效數據。
提示:您可以通過簡單地序列化一個演示對象來生成已知的良好數據:
new ObjectMapper().writeValueAsString(demoObject);
然后您可以嘗試使用該字符串運行您的代碼,這將告訴您您的輸入是否有效。
添加回答
舉報