我有一个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将无法正常工作.
| 归档时间: |
|
| 查看次数: |
4791 次 |
| 最近记录: |