当前位置: 首页 > 知识库问答 >
问题:

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

东方旭东
2023-03-14

在解析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);
}

我得到以下例外:

通用域名格式。fasterxml。杰克逊。果心JsonParseException:意外字符('='(代码61)):在[Source:{assigned=[util]处,需要用冒号分隔字段名和值[junit]。TaskAudit@24c7b944]}; 第1行第11列]

有人能告诉我怎么解决吗。

编辑:这个函数的输入基本上是来自数据库的字符串字段。在保存时,我们会这样保存:

        Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
        auditTrailMap.put("assigned", taskAuditList);
        String jsonString =  new JSONObject(auditTrailMap).toString();

但是在试图解析jsonString时,它就像(分配=[util.TaskAudit@24c7b944]}),我不知道'='来自哪里以及如何解析它。

共有3个答案

杨景山
2023-03-14
ObjectMapper om=new ObjectMapper();
    om.configure(com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);

    List<RootMember> outputList;
    try {
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(resp); 
        outputList = om.readValue(json, new TypeReference<List<RootMember>>(){});
    } catch (JsonMappingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (JsonProcessingException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
施飞昂
2023-03-14

有人能告诉我怎么解决吗。

你已经有了

{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); 

根据您的需要调整以上代码,可能需要重用ObjectMapper实例

在采用新技术之前,请先阅读文档和示例,这将在未来为您节省大量时间,因为它们通常会突出人们使用图书馆的最常见案例。

端木弘方
2023-03-14

您的方法的问题是“您试图以错误的方式将地图解析为JSON。”

您需要使用ObjectMapper将地图解析为JSON字符串。一旦这样做了,就应该能够根据映射中存在的键和值获得所需的正确JSON字符串。

   Map<String, List<TaskAudit>> auditTrailMap = new HashMap<>();
   auditTrailMap.put("assigned", taskAuditList);
   String jsonString =  new ObjectMapper().writeValueAsString(auditTrailMap); 

一旦你这样做,你将得到正确的JSON:{"分配":"你在地图中设置的键的相应值"}

希望这有助于您的预期需求。

 类似资料:
  • }如果您运行该代码,您会发现它工作得很好。那么问题出在哪里?我必须在Oracle NoSQL数据库上执行同样的操作。了解与数据检索相关的任何部分并不重要,因为它们工作得很好,我已经测试过它们。代码非常相似: 我的目标是获得与第一段代码完全相同的结果。根据我的类tweet的属性,由''分隔的值字符串。 但是,这段代码被压缩在一个Jar文件中,并由数据库在记录的所有tweet上运行。我无法看到发生了什

  • 我在数据库中有一个Json字符串,但在Java对象中转换时,它给出了以下错误:

  • 嘿,我遇到了一个关于与jackson反序列化的问题,这里是我尝试过的和我得到的错误。 错误:com。fasterxml。杰克逊。果心JsonParseException:意外字符('}'(代码125)):应以双引号开始字段名 Java代码 我的JSON

  • 问题内容: 由于某种原因,我收到一条错误消息,但是实际上并没有在读取的任何代码中加下划线。我尝试清洁和重建它,但是没有用。它说它在第49行。 我的代码如下 下面的第49行 问题答案: 你内有两个“奇数”字- U + 200C (零宽不连字)和U + 200B (零宽度的空间)的第一个“e”和“m”个之间。“ l”和“ i”之间的“点击”中出现相同的字符。 只需删除并重新输入这些单词,错误就会消失。

  • 问题内容: 在尝试进入sql查询数组并获得以下javascript错误后,我尝试通过php jquery传递json。 返回sql结果的函数: 以这种方式使用此功能后, 而javascript代码是这样的: 如何纠正此错误以及如何从jquery读取json? 问题答案: 您不需要调用,因为jQuery自动执行该调用,因为如果未指定属性,则jQuery会尝试猜测它并调用正确的函数来解析响应,然后再将

  • com.sun.jersey.spi.container.containerresponse mapMappableContainerException严重:MappableContainerException中包含的异常无法映射到响应,重新抛出到HTTP容器org.codehaus.jackson.JsonParseException:意外字符(“b”(代码98)):在[source:java.