Java流无法识别类型

问题描述 投票:1回答:1
((JSONArray) JsonUtils.parseStringToJsonObject(response.getResponseBody()).get("firstArray")).stream()
                .map(s->((JSONArray) s).get(1).toString()).collect(Collectors.toList())

为什么此代码段将返回Object而不是List?

(响应类型是IHttpResponse<String>

java java-8 java-stream collectors
1个回答
0
投票

以下代码应该工作

用于初始化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。您的代码中存在几个问题。第一个是,你在map函数中使用了JSONArray,它应该是JSONObject。第二个是,map返回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);
    }
© www.soinside.com 2019 - 2024. All rights reserved.