我有一个JSONArray
对象,我想将每个对象映射到一个JSONObject
.
我试过了:
JSONArray array; //my json array
array.stream().map(obj -> (JSONObject) obj).forEach((JSONObject prof) -> {
//code
});
Run Code Online (Sandbox Code Playgroud)
然而,这种类型已被封装Object
,因此我似乎无法将其删除.如何使用Java 8流实现此目的?
这里有几个问题.JSONArray
是一个原始子类型ArrayList
.因此它继承的方法也是原始的,它们的所有类型参数都被擦除并减少到Object
.只是这应该告诉你事情不会安全.
调用
array.stream().map(..)
Run Code Online (Sandbox Code Playgroud)
是生的.因此Function
,map
接受也将是原始的.退回的Stream
也将是原始的.因此,forEach
调用将对Object
擦除的结果类型进行操作.除了在操作之间进行投射之外,你无能为力.就像是
Stream stream = array.stream().map(obj -> (JSONObject) obj);
((Stream<JSONObject>) stream).forEach((JSONObject prof) -> {
// code
});
Run Code Online (Sandbox Code Playgroud)
但这绝不是安全的(除非你知道只有JSONObject
对象JSONArray
).这让我们...
我有一个JSONArray对象,我想将每个对象映射到一个JSONObject.
您必须决定如何进行此映射.JSONArray
可以包含JSONObject
,字符串,数字等.简单地转换为一个JSONObject
将无法正常工作.