【发布时间】:2018-07-17 17:55:23
【问题描述】:
在解析 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: Unexpected character ('=' (code 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 时,它就像 (assigned=[util.TaskAudit@24c7b944]}),我不知道 '=' 来自哪里以及如何解析它。
【问题讨论】:
-
(assigned=[util.TaskAudit@24c7b944]})不是有效的 JSON 字符串 -
嗨@lucasvw 这个字符串是从另一个API 到地图上的toString() 时生成的。生成的字符串就是上述函数的输入。
-
如何解决?修复 JSON
-
=没有在 JSON 中使用,它描述的是 数据,而不是函数。我建议你做一些关于 JSON 的基本阅读。它一般表示数组和对象,其中对象使用"key" : "value"对。 Here's an example 来自 json.org -
JSONObject类是什么?几乎可以肯定的是,它的toString()方法并没有按照你的想法做。
标签: java java-8 jackson jsonparser