Java流无法识别类型

时间:2018-02-15 16:20:34

标签: java java-8 java-stream collectors

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

为什么此代码段会返回一个Object而不是List?

(响应类型为IHttpResponse<String>

1 个答案:

答案 0 :(得分: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());

将JSONArray转换为Stream<Object>

的Util方法
private static Stream<Object> arrayToStream(JSONArray array) {
        return StreamSupport.stream(array.spliterator(), false);
    }