【问题标题】:HashMap to Json Array Object - JavaHashMap 到 Json 数组对象 - Java
【发布时间】:2019-05-03 23:14:19
【问题描述】:

我有一个 HashMap,需要将其解析为 JSON:

HashMap<String, Integer> worders = new HashMap<>();

我需要将其解析为 JSON 对象数组。 当前值:

{"and": 100},
{"the": 50}

需要的 JSON 格式:

[
{"word": "and",
"count": 100},
{"word": "the",
"count": 50}
]

我意识到我需要使用循环将其转换为正确的格式,但不确定从何处或如何开始。

我也使用 ObjectMapper() 将其写为 JSON,但是格式不正确,谢谢帮助。

【问题讨论】:

  • 所以你想创建一个 WordWithCount 类,并用你的 HashMap 包含的内容填充 List ,对吗? HashMap 有一个 entrySet() 方法,它是所有条目的集合。因此,您可以遍历 if 并将每个条目转换为 WordWithCount。阅读 javadoc。试试看。
  • 这里不完全清楚你想做什么。您是否尝试将 JSON 格式的值打印到控制台,或者将它们存储在数据结构或文件中?请澄清。

标签: java json loops hashmap


【解决方案1】:

您实际上不需要创建正式的 Java 类来执行此操作。我们可以尝试创建一个ArrayNode,然后添加子JsonNode 对象,它们代表原始哈希图中的每个条目。

HashMap<String, Integer> worders = new HashMap<>();
worders.put("and", 100);
worders.put("the", 50);

ObjectMapper mapper = new ObjectMapper();
ArrayNode rootNode = mapper.createArrayNode();

for (Map.Entry<String, Integer> entry : worders.entrySet()) {
    JsonNode childNode = mapper.createObjectNode();
    ((ObjectNode) childNode).put("word", entry.getKey());
    ((ObjectNode) childNode).put("count", entry.getValue());
    ((ArrayNode) rootNode).add(childNode);
}

String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);
System.out.println(jsonString);

【讨论】:

  • 非常感谢,正是我想要的!
猜你喜欢
  • 2016-06-14
  • 2015-02-22
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多