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);
然后您可以尝试使用该字符串运行您的代码,这将告诉您您的输入是否有效。
添加回答
举报