在Java中将HashMap格式化为JSON

dd483pe:

假设我有以下HashMap需要转换为JSON:

HashMap <String, String> test1 = {k1,v1},{k2,v2},{k3,v3},{k4,v4};

我知道使用JSONObject创建JSON输出:

JSONObject json = new JSONObject ( test1 );

但是,json将采用以下格式: {"k1":"v1","k2":"v2","k3":"v3","k4":"v4"}

我希望输出是这样的:

[{"key":"k1","value":"v1"},
{"key":"k2","value":"v2"},
{"key":"k3","value":"v3"},
{"key":"k4","value":"v4"}]

是否有人对如何转换为格式化的JSON有意见?进一步的问题:如果HashMap的键是Set of String怎么办?

HashMap <String, Set<String>> test1 = {k1,{v1,v2,v3}},{k2,{v4,v5,v6}},{k3,{v7,v8,v9}};

我希望输出是这样的:

[{"key":"k1","value":["v1","v2","v3"]},
{"key":"k2","value":["v4","v5","v6"]},
{"key":"k3","value":["v7","v8","v9"]}]

谢谢您的帮助

卡罗尔·道贝克(Karol Dowbecki):

假设您正在使用json-simple库,则可以先将每个映射条目转换为新映射JSONObject,然后将所有映射条目添加到JSONArray

Map<String, String> map = Map.of("k1", "v1", "k2", "v2", "k3", "v3", "k4", "v4");
JSONArray arr = map.entrySet().stream()
    .map(e -> Map.of("key", e.getKey(), "value", e.getValue()))
    .map(JSONObject::new)
    .collect(JSONArray::new, JSONArray::add, JSONArray::addAll);
System.out.println(arr); 

将打印:

[{"value":"v4","key":"k4"},{"value":"v3","key":"k3"},{"value":"v2","key":"k2"},{"value":"v1","key":"k1"}]

输出中元素的顺序JSONArray将取决于所使用的映射,LinkedHashMap如果要在迭代时保留插入顺序,则需要此元素否则,您必须使用比较器订购该流。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中将1200格式化为1.2k

如何在Java中将长整数格式化为不带分隔符的字符串?

在JavaScript中将日期格式化为MM / dd / yyyy

将Json响应格式化为数组Java

如何在Java中将表格数据格式化为文本?

在Java / Android中将双精度格式格式化为至少一位有效数字

如何在Java中将输出格式化为表格?

在AWS Lambda中将DynamoDB数据格式化为普通JSON

在PHP中将Javascript DateTime格式化为date('ymdHis')

在Java中将字符串日期格式化为其他格式

在Silverstripe中将JSON编码的字符串格式化为更易于阅读的格式

在API网关中将DynamoDB数据格式化为普通JSON

无法在Java中将时间戳格式化为YYYY-MM-DD HH:mm:ss

在R中将POSIXct日期格式化为DDMMMYYYY格式

jOOQ JSON格式化为对象数组

在foreach循环中将JSON日期时间格式化为PHP

在python中将.csv格式化为json,以获取单个key:value对

如何在Java,Android中将SQL日期格式化为简单日期格式?

在Proxmox VE中将原始图像格式化为XFS

在Python中将数字格式化为货币

在 ASP.NET MVC 中将 JSON 格式化为数组

如何在 Java 中将日期格式化为带有缩写时区的格式?

将 JSON 格式化为数组 $variable

在 Swift 中将日期格式化为 sql 日期格式

将 PostgreSQL 格式化为 JSON

在java中将字符串格式化为日期

在 Univocity Parser 中将 ResultSet 格式化为特定的 DecimalFormat

在python中将数字或字符串格式化为货币

我如何在lua中将时间格式化为秒?