【发布时间】:2019-07-02 09:56:22
【问题描述】:
我无法让 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。
【问题讨论】:
-
您是否注意到我在答案中提到了假设
jsonArray是List<Object>?无论如何,是什么让你这样做jsonArray.stream()否则? -
因为 JSONArray 在内部扩展了
list。而且它是未参数化的,因此存在问题 -
你是对的。我很遗憾错过了
extends部分。这肯定会带来很多未经检查的演员警告。但是,如果您确定 JSON 是一个列表,则对索引进行迭代可能会奏效。
标签: java json java-8 java-stream collectors