com.googlecode.json-simple和Java Streams不能一起使用

时间:2019-02-08 07:17:01

标签: java json java-8 java-stream collectors

我无法让com.googlecode.json-simple和Java-8流一起工作。

以下代码不起作用:

JSONArray jsonArray = new JSONArray();
List<String> a = jsonArray.stream()
        .map(o -> ((Map)o).get("s"))
        .map(Object::toString)
        .collect(Collectors.toList());

它说:

java: incompatible types: java.lang.Object cannot be converted to java.util.List<java.lang.String>

但是它应该工作,因为我在收集之前将流对象显式地转换为String

1 个答案:

答案 0 :(得分:0)

由于JSONArray扩展了ArrayList但未将类型绑定到该类型,因此一种可能的方法是将索引上的列表迭代为:

JSONArray jsonArray = new JSONArray();
List<String> list = IntStream.range(0, jsonArray.size())
    .mapToObj(i -> ((Map) jsonArray.get(i)).get("s"))
    .map(Object::toString)
    .collect(Collectors.toCollection(ArrayList::new));