我正在尝试使用Java中的Streams循环JsonArray,我已经使用以下代码循环了JsonObject
jsonObject.entrySet().stream()
但是JsonArray没有entrySet()
类,我曾尝试使用iterator方法,但它只打印出JsonArray内部的JsonObject之一,这是我的尝试
.map(JsonArray::iterator)
.map(Iterator::next)
.forEach(System.out::println);
编辑:我正在从JsonObject流中获取JsonArray
.map(JsonArray.class::cast)
//need to handle jsonArray
答案 0 :(得分:0)
这些是将迭代器转换为流的实用程序函数。使用这些功能可以将迭代器转换为流。
public static <T> Stream<T> asStream(Iterator<T> sourceIterator) {
return asStream(sourceIterator, false);
}
public static <T> Stream<T> asStream(Iterator<T> sourceIterator, boolean parallel) {
Iterable<T> iterable = () -> sourceIterator;
return StreamSupport.stream(iterable.spliterator(), parallel);
}
like:
asStream(jsonObject.keys())
.map(JsonObject::getJSONObject)
.foreach(//do what you want);
OR
asStream(jsonObject.keys()).forEach();
答案 1 :(得分:0)
使用StreamSupport.stream(jsonArray.spliterator(), false)
获得Stream
的json数组。
所以您的代码将如下所示:-
StreamSupport.stream(jsonArray.spliterator(), false)
.forEach(....);
答案 2 :(得分:0)
jsonObject.entrySet().stream()
.map(entery -> {
return StreamSupport.stream(((JsonArray) entery.getValue()).spliterator(), false);
})
.forEach(stream->stream.forEach(System.out::println));
使用流支持,您可以将jsonArray映射/转换为流,然后在forEach中获取每个jsonArray的流,然后可以在该forEach中流式传输