JSONArray用stream
时间: 2023-07-20 07:32:24 浏览: 162
`JSONArray` 是 `fastjson` 库中提供的一个类,它实现了 `List` 接口,用于存储多个 `JSONObject` 或 `JSONArray` 对象。`JSONArray` 没有直接提供 `stream()` 方法,但您可以通过将其转换为 `List` 类型,再通过 `stream()` 方法来实现流操作。
例如,假设您有一个 `JSONArray` 对象:
```
JSONArray jsonArray = new JSONArray();
jsonArray.add(new JSONObject().fluentPut("name", "Alice").fluentPut("age", 18));
jsonArray.add(new JSONObject().fluentPut("name", "Bob").fluentPut("age", 20));
jsonArray.add(new JSONObject().fluentPut("name", "Charlie").fluentPut("age", 22));
```
如果您想要使用 `stream()` 方法来对该 `JSONArray` 进行流操作,可以先将其转换为 `List` 类型,再使用 `stream()` 方法,例如:
```
List<JSONObject> jsonObjectList = jsonArray.stream()
.map(obj -> (JSONObject)obj)
.collect(Collectors.toList());
jsonObjectList.stream()
.filter(json -> json.getInteger("age") > 18)
.forEach(json -> {
System.out.println(json.getString("name") + " is older than 18");
});
```
在这个例子中,我们首先将 `JSONArray` 转换为 `List` 类型,并使用 `map()` 方法将每个元素强制转换为 `JSONObject` 类型。然后我们使用 `stream()` 方法对 `List` 进行流操作,通过 `filter()` 方法过滤 `age` 属性大于 18 的元素,最后在 `forEach()` 中输出符合条件的元素的 `name` 属性值。
请注意在使用 `map()` 方法时需要进行强制类型转换,否则会出现类型转换异常。
阅读全文