解析 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)):需要冒号来分隔字段名称和值
[junit] 位于 [来源:{assigned=[util.TaskAudit@24c7b944]};行:1,列:11]
任何人都可以提供有关如何解决该问题的任何线索吗?
编辑:基本上这个函数的输入是来自数据库的字符串字段。保存时我们这样保存:
Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
auditTrailMap.put("assigned", taskAuditList);
String jsonString = new JSONObject(auditTrailMap).toString();
但是,在尝试解析 jsonString 时,它就像 (signed=[util.TaskAudit@24c7b944]}) 一样,我不知道“=”来自哪里以及如何解析它。
您的方法的问题是您正在尝试解析Map
以错误的方式转换为 JSON。
你需要使用杰克逊的ObjectMapper
在那里解析你的Map
转换为 JSON 字符串。完成此操作后,您应该能够根据预期中的 KEY 和 VALUE 获得正确的 JSON 字符串Map
.
Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
auditTrailMap.put("assigned", taskAuditList);
String jsonString = new ObjectMapper().writeValueAsString(auditTrailMap);
执行此操作后,您将获得正确的 JSON:
{
"assigned" : "corresponding value for the key which you set in the map"
}
希望这有助于您的预期要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)