Цикл JsonArray с использованием потоков - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь зациклить JsonArray, используя Streams в Java, я зациклил JsonObject, используя следующий код

jsonObject.entrySet().stream()

но нет класса entrySet() для JsonArray. Как бы я ни пытался использовать метод итератора, но он только распечатал один из JsonObject внутри JsonArray, вот моя попытка

.map(JsonArray::iterator)
.map(Iterator::next)
.forEach(System.out::println);

Редактировать: я получаю JsonArray из потока JsonObject

.map(JsonArray.class::cast)
//need to handle jsonArray

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Используйте StreamSupport.stream(jsonArray.spliterator(), false), чтобы получить Stream массива json.

Итак, ваш код будет выглядеть так: -

StreamSupport.stream(jsonArray.spliterator(), false)
             .forEach(....);
0 голосов
/ 29 октября 2018
jsonObject.entrySet().stream()
                .map(entery -> {
                    return StreamSupport.stream(((JsonArray) entery.getValue()).spliterator(), false);
                })
                .forEach(stream->stream.forEach(System.out::println));

Используя поддержку потока, вы можете отобразить / преобразовать ваш jsonArray в поток, а затем в forEach вы получите поток для каждого jsonArray, а затем вы можете передать их в этом forEach

0 голосов
/ 29 октября 2018

Это служебные функции, которые преобразуют итератор в поток. используйте эти функции для преобразования вашего итератора в потоки.

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);
  }

нравится:

asStream(jsonObject.keys())
   .map(JsonObject::getJSONObject)
   .foreach(//do what you want);

OR

asStream(jsonObject.keys()).forEach();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...