我有以下内容(使用org.json.simple):
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
...
final JSONArray results = (JSONArray) responseObject.get("results");
results
.stream()
.filter(JSONObject.class::isInstance)
.map(JSONObject.class::cast)
.map(obj -> obj) // obj is still Object here, not JSONObject?
问题是在我调用map将流元素转换为JSONObject
之后,在下一次调用map时,元素仍然是Object
,而不是JSONObject
。不确定我在这里做错了什么?
相关:是否可以在Java 8中强制转换流?
组织。json。易于理解的JSONArray扩展了java。util。ArrayList,这意味着它扩展了原始类型。
结果,<代码>结果。stream()返回原始流,而不是流
如果组织。json。易于理解的JSONArray扩展阵列列表
我相信通过以下未经检查的演员阵容,你应该能够克服这一点:
final JSONArray results = (JSONArray) responseObject.get("results");
List<Object> genericResults = (List<Object>) results;
List<JSONObject> list =
genericResults.stream()
.filter(JSONObject.class::isInstance)
.map(JSONObject.class::cast)
.collect(Collectors.toList());