JSONArray使用stream获取多个字段组成新的JSONArray
时间: 2024-05-14 11:17:46 浏览: 90
浅析Java中JSONObject和JSONArray使用
可以使用 Java 8 中的 Stream API 和 Lambda 表达式来实现这个需求。具体实现步骤如下:
1. 将原始的 JSONArray 转换为 Stream。
2. 对每个 JSONObject 进行处理,提取需要的字段并组成新的 JSONObject。
3. 将新的 JSONObject 组成一个新的 JSONArray。
下面是一个示例代码,假设我们有一个原始的 JSONArray,其中包含多个 JSONObject,每个 JSONObject 包含三个字段:name、age 和 gender。现在我们想要提取出 name 和 age 字段,组成一个新的 JSONArray。
```java
JSONArray originalArray = new JSONArray("[
{"name": "Alice", "age": 25, "gender": "female"},
{"name": "Bob", "age": 30, "gender": "male"},
{"name": "Charlie", "age": 35, "gender": "male"}
]");
JSONArray newArray = originalArray.stream()
.map(obj -> (JSONObject) obj)
.map(obj -> {
JSONObject newObj = new JSONObject();
newObj.put("name", obj.getString("name"));
newObj.put("age", obj.getInt("age"));
return newObj;
})
.collect(Collectors.toCollection(JSONArray::new));
```
在上面的代码中,我们首先将原始的 JSONArray 转换为 Stream,然后对每个 JSONObject 进行处理,提取需要的字段并组成新的 JSONObject。最后,我们将新的 JSONObject 组成一个新的 JSONArray。
注意,这里使用了 map() 方法来对每个 JSONObject 进行处理,并使用 collect() 方法将处理后的结果收集到一个新的 JSONArray 中。同时,我们还需要将 JSONObject 转换为具体的类型,例如 getString() 和 getInt() 方法来获取对应的字段值。
阅读全文