将JSONArray添加到Hashmap中的映射值中



我有一个JSON数组,我正在使用JSON对象填充它,代码看起来像这个

Map<String, String> orderLines = new HashMap<>();
orderLines.put("xx",XX);
orderLines.put("yy",YY);
JSONObject obj=new JSONObject(orderLines);
JSONArray array = new JSONArray().put(obj);

我正试图将这个阵列添加到我的地图中,并将其添加到中

Map<String, Object> customFields = new HashMap<>();
customFields.put("postOrderRequest.orderLines", array);

但是当我使用从这些映射值构建json时

customFields.forEach((k, v) -> json.set(k, v));

,我无法从地图中构建json,我试图实现的是类似于的东西

{
"orderLines" : [{"xx":"XX","yy":"YY"}]
}

您可以尝试此操作(无需任何外部库-仅使用Java 8(

Map<String, Object> customFields = new LinkedHashMap<>();
List<String> jsonKeyList = List.of("orderLines1", "orderLines2");
jsonKeyList.forEach(listItem -> orderKeys(listItem, customFields));
String result = "{" + customFields.entrySet().stream()
.map(e -> """ + e.getKey() + "":" +
String.valueOf(e.getValue()))
.collect(Collectors.joining(", ")) +
"}";
System.out.println("Result: " + result);
}
public static void orderKeys(final String key, final Map<String, Object> result)
{
JSONArray array = new JSONArray();
JSONObject item = new JSONObject();
item.put("xx", "XX");
item.put("yy", "YY");
array.put(item);
result.put(key, array);
}

输出:

Result: {"orderLines1":[{"xx":"XX","yy":"YY"}], "orderLines2":[{"xx":"XX","yy":"YY"}]}

否则,您可以使用外部库作为用例(即Undercore java-library将哈希映射或数组列表转换为json,反之亦然(。

图片来源:StackOverflow

最新更新