JSONArray jsonArray = JSONObject.parseArray(commodityDetailsList); jsonArray.stream().filter() filter怎么获取值
时间: 2024-03-10 15:45:05 浏览: 106
在使用 `filter()` 过滤 `JSONArray` 中的元素时,可以使用 `JSONObject` 中提供的方法来获取每个元素中的属性值,例如:
```
jsonArray.stream()
.filter(json -> json.getInteger("id") == 1) // 过滤 id 值为 1 的元素
.forEach(json -> {
// 处理符合条件的元素
System.out.println(json.getString("name")); // 输出符合条件元素的 name 属性值
});
```
在这个例子中,我们通过 `json.getInteger("id") == 1` 的方式来过滤 `id` 属性值为 1 的元素,然后在 `forEach()` 中处理符合条件的元素,这里只是简单地输出了元素的 `name` 属性值。
您可以根据实际情况修改 Lambda 表达式中的过滤条件和处理逻辑。
相关问题
优化以下代码 JSONArray jsonArray = JSONArray.parseArray(jsonObject.getString("logTimeJson")); Map<String, Long> bbb = (Map<String, Long>) jsonArray.stream() .filter(map -> ((Map<String,Long>)map).get("vehicleTime") <= occurredOn.getTime()) .min(Comparator.comparingLong(map1 -> occurredOn.getTime() - ((Map<String,Long>)map1).get("vehicleTime"))) .orElse(null); Long time = occurredOn.getTime()-(bbb.get("vehicleTime")-bbb.get("thirdTime"));
可以考虑以下优化:
1. 避免频繁类型转换:可以在读取 jsonArray 时将其转换为 List<Map<String, Long>> 类型,避免多次类型转换。
2. 避免重复计算:可以将 occurredOn.getTime() 提前计算并保存,避免重复计算。
优化后的代码如下:
```
List<Map<String, Long>> list = JSONArray.parseArray(jsonObject.getString("logTimeJson"), Map.class);
long occurredOnTime = occurredOn.getTime();
Map<String, Long> bbb = list.stream()
.filter(map -> map.get("vehicleTime") <= occurredOnTime)
.min(Comparator.comparingLong(map1 -> occurredOnTime - map1.get("vehicleTime")))
.orElse(null);
if (bbb != null) {
Long time = occurredOnTime - (bbb.get("vehicleTime") - bbb.get("thirdTime"));
}
```
JSONArray parseArray = JSONArray.parseArray(JSON.toJSONString(mainlist)); 修改第一列的某个属性
如果您要修改JSONArray中第一列的某个属性,可以使用以下代码:
```
parseArray.getJSONObject(0).put("属性名", "新的属性值");
```
其中,`getJSONObject(0)`获取JSONArray中第一个JSONObject对象,然后使用`put`方法修改该JSONObject对象中的属性值。您需要将`"属性名"`替换为您要修改的属性名,将`"新的属性值"`替换为您要设置的新值。
阅读全文