按如下方式解析JSONString(assigned=[util.TaskAudit@24c7b944]}
):
Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
ObjectMapper mapper = new ObjectMapper();
mapper.configure(Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
try {
auditTrailMap = mapper.readValue(strObject, new TypeReference<Map<String, List<TaskAudit>>>(){});
} catch (IOException e) {
log.error("{}", e);
}
我遇到以下异常:
com.fasterxml.jackson.core.JsonParseException:意外字符(“ =”(代码61)):期望冒号分隔字段名称和值 [来源]:{assigned = [util.TaskAudit@24c7b944]}的[junit];行:1,列:11]
任何人都可以提供有关解决方法的任何线索。
编辑:基本上,此函数的输入是来自数据库的字符串字段。保存时,我们将其保存为:
Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
auditTrailMap.put("assigned", taskAuditList);
String jsonString = new JSONObject(auditTrailMap).toString();
但是在尝试解析jsonString时,它就像(assigned = [util.TaskAudit@24c7b944]})一样,我不知道'='的来源以及如何解析它。
答案 0 :(得分:1)
任何人都可以提供有关解决方法的任何线索。
您已经拥有了
{assigned=[util.TaskAudit@24c7b944]}
不是有效的JSON字符串。
不需要Map的 toString()
方法来返回JSON表示,因此您必须自己将其序列化为JSON,like in this answer:
Map<String,String> payload = new HashMap<>();
payload.put("key1","value1");
payload.put("key2","value2");
// right way to convert map to JSON:
String json = new ObjectMapper().writeValueAsString(payload);
使上面的代码适应您的需要,可能会重用ObjectMapper
实例。
在采用新技术之前,请先阅读the docs和examples,因为它通常会突出显示人们使用图书馆的最常见情况,因此它将为您节省很多时间。
答案 1 :(得分:0)
方法的问题是“您试图以错误的方式将MAP解析为JSON。”
您需要在此处使用ObjectMapper将MAP解析为JSON字符串。完成此操作后,您应该能够根据地图中显示的键和值,按预期获得正确的JSON字符串。
Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
auditTrailMap.put("assigned", taskAuditList);
String jsonString = new ObjectMapper().writeValueAsString(auditTrailMap);
执行此操作后,您将获得正确的JSON: { “ assigned”:“您在地图中设置的密钥的对应值” }
希望这可以满足您的预期要求。