Поток Java не распознает тип

((JSONArray) JsonUtils.parseStringToJsonObject(response.getResponseBody()).get("firstArray")).stream()
                .map(s->((JSONArray) s).get(1).toString()).collect(Collectors.toList())

Почему этот фрагмент кода возвращает объект, а не список?

(тип ответа IHttpResponse<String>)

1 ответ

Следующий код должен работать

Пример кода для инициализации JSONArray

    JSONArray jsonArray =new JSONArray();
    JSONObject j1 = new JSONObject();
    j1.put ("key", "Stack");
    JSONObject j2 = new JSONObject();
    j2.put ("key", "Overflow");
    jsonArray.add(j1);
    jsonArray.add(j2);

Преобразуйте JSONArray в List. В вашем коде было несколько проблем. Во-первых, вы использовали JSONArray внутри функции карты, и это должен быть JSONObject . Во-вторых, карта возвращает Stream, и нам нужно ввести его в Stream<String>

 List<String> output =  arrayToStream(jsonArray)
                                 .map(JSONObject.class::cast)
                                 .map(s -> s.get("key").toString())
                                 .collect(Collectors.toList());

Util метод для преобразования JSONArray в Stream<Object>

private static Stream<Object> arrayToStream(JSONArray array) {
        return StreamSupport.stream(array.spliterator(), false);
    }
Другие вопросы по тегам