Json 具有多个 Json 对象的数组转换为基于 java8 的映射
Json Array having multiple JsonObject Conversion to map based on java8
我有多个应用程序,其中 returns 一个 JsonArray 具有多个 JsonObject
像这样例如 app1
[ {"Server":"PCF","Port":"9878","Calls":"655"},
{"Server":"AWS","Port":"5672","Calls":"655"},.... ].
所有 JsonObject 中的字段都相同。
我想创建一个基于包含 JsonObject 列表的字段服务器的地图。
"PCF":[{"Server":"PCF","Port":"9878","Calls":"655"}, {"Server":"PCF","Port":"562","Calls":"65"}]
条件:
1) 我想使用 java8(我在旧版本上做过)。
2) 我正在使用 org.json.
我之前没有使用过 JSON-Java 库,但通过一些研究,似乎表明 org.json 中的 JsonArray 实现了 java.lang.Iterable<java.lang.Object>
因此我们可以这样做:
Map<String, List<JSONObject>> result =
StreamSupport.stream(jsonArray.spliterator(), false)
.map(f -> (JSONObject) f) // assumes every 'f' is a JSONObject otherwise use filter before map
.collect(groupingBy(f -> f.getString("Server")));
如果你不转换为 JSONObject
那么这会 return:
Map<String, List<Object>> result =
StreamSupport.stream(jsonArray.spliterator(), false)
.collect(groupingBy(f -> ((JSONObject)f).getString("Server")));
进口:
import java.util.stream.*;
import static java.util.stream.Collectors.*;
我有多个应用程序,其中 returns 一个 JsonArray 具有多个 JsonObject 像这样例如 app1
[ {"Server":"PCF","Port":"9878","Calls":"655"},
{"Server":"AWS","Port":"5672","Calls":"655"},.... ].
所有 JsonObject 中的字段都相同。 我想创建一个基于包含 JsonObject 列表的字段服务器的地图。
"PCF":[{"Server":"PCF","Port":"9878","Calls":"655"}, {"Server":"PCF","Port":"562","Calls":"65"}]
条件: 1) 我想使用 java8(我在旧版本上做过)。 2) 我正在使用 org.json.
我之前没有使用过 JSON-Java 库,但通过一些研究,似乎表明 org.json 中的 JsonArray 实现了 java.lang.Iterable<java.lang.Object>
因此我们可以这样做:
Map<String, List<JSONObject>> result =
StreamSupport.stream(jsonArray.spliterator(), false)
.map(f -> (JSONObject) f) // assumes every 'f' is a JSONObject otherwise use filter before map
.collect(groupingBy(f -> f.getString("Server")));
如果你不转换为 JSONObject
那么这会 return:
Map<String, List<Object>> result =
StreamSupport.stream(jsonArray.spliterator(), false)
.collect(groupingBy(f -> ((JSONObject)f).getString("Server")));
进口:
import java.util.stream.*;
import static java.util.stream.Collectors.*;