意外字符('='(代码 61)):解析 JsonString 时

解析 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)): 期望在 [Source: {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]}),我不知道 '=' 来自哪里以及如何解析它。


大话西游666
浏览 616回答 2
2回答

慕田峪7331174

您的方法的问题是“您试图以错误的方式将 MAP 解析为 JSON。”您需要在那里使用 ObjectMapper 将您的 MAP 解析为 JSON 字符串。完成此操作后,您应该能够根据 Map 中存在的 KEY 和 VALUE 获得预期的正确 JSON 字符串。&nbsp; &nbsp;Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();&nbsp; &nbsp;auditTrailMap.put("assigned", taskAuditList);&nbsp; &nbsp;String jsonString =&nbsp; new ObjectMapper().writeValueAsString(auditTrailMap);&nbsp;执行此操作后,您将获得正确的 JSON: { "assigned" : "您在地图中设置的键的对应值" }希望这有助于您的预期要求。

MM们

任何人都可以提供有关如何解决该问题的任何线索。你已经有了{assigned=[util.TaskAudit@24c7b944]}不是有效的 JSON 字符串。toString()Map 的方法不需要返回您的 JSON 表示,因此您必须自己将其序列化为 JSON,就像在这个答案中一样: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);&nbsp;根据您的需要调整上面的代码,可能会重用ObjectMapper实例。在适应新技术之前先阅读文档和示例,它会在未来为您节省大量时间,因为它们通常会突出人们使用库的最常见案例。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java