我调用REST端点,并将JSON对象作为String
返回。然后我将String
解析为Object
。
final Object parse = JSONValue.parse(body);
我检查对象是否是JSONArray
的实例,并将对象的选定元素添加到列表中。
if (parse instanceof JSONArray) {
((JSONArray) parse).stream().collect(Collectors.toList()).forEach(o -> list.add((String) ((JSONObject) o).get("id")));
((JSONArray) parse).stream().collect(Collectors.toList()).forEach(o -> list.add((String) ((JSONObject) o).get("uri")));
}
截至目前,我首先添加了所有"id"
字段,然后添加了所有"uri"
字段。在我的列表中,我目前有34个ID,其次是34个uris。我想让每个id后跟相应的uri。任何帮助都会很棒。
答案 0 :(得分:3)
首先,您应该使用collect
,而不是forEach
。
现在,要使每个id后跟相应的uri,您可以使用flatMap
:
List<String> list =
((JSONArray) parse).stream()
.flatMap(o->Stream.of((String) ((JSONObject) o).get("id"),(String) ((JSONObject) o).get("uri")))
.collect(Collectors.toList());
答案 1 :(得分:1)
我没有测试过,但这应该有用。
List<Object> result;
if (parse instanceof JSONArray) {
result = ((JSONArray) parse).stream()
.flatMap(o -> Stream.of(o.get("id"), o.get("uri")))
.collect(Collectors.toList());
}
编辑: 或者更确切地说是伊兰在几分钟之前发布他包括适当的演员。