JSONArray使用stream获取多个字段组成新的JSONArray
时间: 2024-05-16 20:14:48 浏览: 214
可以使用 Java 8 中的 Stream API 来实现。假设我们有一个包含多个 JSONObject 的 JSONArray,每个 JSONObject 都包含两个字段 name 和 age。我们想要新建一个 JSONArray,其中每个 JSONObject 只包含 name 字段和 age 字段的和。具体操作如下:
```java
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject1 = new JSONObject().put("name", "Alice").put("age", 20);
JSONObject jsonObject2 = new JSONObject().put("name", "Bob").put("age", 30);
jsonArray.put(jsonObject1);
jsonArray.put(jsonObject2);
JSONArray resultArray = jsonArray.stream().map(obj -> {
JSONObject jsonObject = (JSONObject) obj;
int sum = jsonObject.getInt("age") + 5; // 对 age 字段进行加 5 操作
return new JSONObject().put("name", jsonObject.getString("name")).put("sum", sum); // 构造新的 JSONObject
}).collect(Collectors.toCollection(JSONArray::new)); // 将结果转换为 JSONArray
System.out.println(resultArray);
}
}
```
上述代码使用 map 操作将每个 JSONObject 转换为一个新的 JSONObject,再使用 collect 操作将所有新的 JSONObject 组成一个 JSONArray。在这里,我们对 age 字段进行了加 5 操作,并将结果放在新的字段 sum 中。你可以根据自己的需求进行相应的修改。
阅读全文