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

如何使用Json对象数组将HashMap正确转换为Json

禹正阳
2023-03-14

我有一个Kafka信息流,想建立一个哈希图

for (ConsumerRecord<String,String> consumerRecord : records) {
    if(!responses.containsKey(consumerRecord.topic())){
        responses.put(consumerRecord.topic(), new ArrayList<Object>());
    }
    responses.get(consumerRecord.topic()).add(JSONObject.stringToValue(consumerRecord.value()));
}

预期回应:

{
    "topic1": [
        {"field1":"value1","field2":"value2","field3":"value3"}
    ],
    "topic2": [
        {"field1":"value1","field2":"value2","field3":"value3"},
        {"anotherfield1":"anothervalue1","anotherfield2":"anothervalue2"}
    ]
}

实际答复:

{
    "topic1": [
        "{\"field1\":\"value1\",\"field2\":\"value2\",\"field3\":\"value3\"}"
    ],
    "topic2": [
        "{\"field1\":\"value1\",\"field2\":\"value2\",\"field3\":\"value3\"}",
        "{\"anotherfield1\":\"anothervalue1\",\"anotherfield2\":\"anothervalue2\"}"
    ]
}

共有1个答案

姬昊焱
2023-03-14

斜杠引号(")符号只是JSON中正确转义的引号。您的解析器没有将内部JSON识别为JSON,而是将它们视为Strings。因此,在字符串中,它逃过了所有“符号”。我建议您可以使用Json-Jackson的ObjectMapper类(也称为Faster XML)库(此处为Maven工件)。我写了我自己的开源库MgntUtils,它有基于Json-Jackson的JSON解析器。使用这个库,您可以轻松地将JSON字符串解析成地图

Map<String, Object> myMap = null;
try {
      myMap = JsonUtils.readObjectFromJsonString(jsonString, Map.class);
    }
} catch (IOException e) {
   ...
}

以下是JsonUtils的Javadoc。MgntUtils库的Maven工件可以在这里找到,而作为jar的库以及Javadoc和源代码可以在Github上找到

 类似资料:
  • 问题内容: 我想用来将json对象流放入json数组中,例如,从 至 但这行不通 自从我得到 问题答案: 用该选项将其混为一谈。 作为另一种选择,使用读取值是更灵活的选择。通常,您需要将此选项与选项结合使用,以防止第一个值过早消耗。

  • 问题内容: 我需要将JSON对象字符串转换为JavaScript数组。 这是我的JSON对象: 我想拥有: 我该如何实现? 问题答案: var json_data = {“2013-01-21”:1,”2013-01-22”:7}; var result = [];

  • 问题内容: 我有一个API请求,返回以下内容: 我想在单击按钮后使用以下代码显示获取的电影标题: 我的问题是,我收到一条错误消息,提示我只能遍历数组,并且我的数据是对象。如何在打字稿中将Object转换为Array,并在表格中显示电影的标题? 问题答案: 没错,您的回复是一个带有字段的对象: 因此,您实际上只想迭代该字段: …甚至更简单:

  • 我在数组中有一组值,每个值都有一个和。 一旦我有了值数组和类型控制台和,输出是: 如何将这些值存储在哈希映射中,如键值(ID-LABEL)对,并将其存储在json中?

  • 如何将hashmap转换或强制转换为Java中的JSON对象,并再次将JSON对象转换为JSON字符串?

  • 问题内容: 我正在从返回JSON格式数据的服务器请求数据。发出请求时,将HashMap转换为JSON并不难,但另一种方式似乎有些棘手。JSON响应如下所示: 哪种方法最容易访问此数据?我正在使用GSON模块。 问题答案: 干得好: