我有一个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