使用Java 8的流(Stream)可以很方便地对JSONArray进行批量修改某个值。

以下是一个示例代码:

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.stream.IntStream;

public class JSONArrayStreamDemo {

    public static void main(String[] args) {
        JSONArray jsonArray = new JSONArray("[{\"name\":\"Alice\",\"age\":20},{\"name\":\"Bob\",\"age\":30},{\"name\":\"Charlie\",\"age\":40}]");

        // 使用IntStream的range方法遍历JSONArray的索引
        IntStream.range(0, jsonArray.length())
                // 通过索引获取JSONObject
                .mapToObj(jsonArray::getJSONObject)
                // 修改JSONObject的age属性值
                .peek(jsonObject -> jsonObject.put("age", jsonObject.getInt("age") + 10))
                .forEach(System.out::println);

        System.out.println(jsonArray);
    }
}

运行这段代码,将会输出以下结果:

{"name":"Alice","age":30}
{"name":"Bob","age":40}
{"name":"Charlie","age":50}
[{"name":"Alice","age":30},{"name":"Bob","age":40},{"name":"Charlie","age":50}]

在这个示例中,我们首先创建了一个JSONArray对象,然后使用IntStream的range方法遍历了JSONArray的索引。通过索引我们可以获取到JSONArray中的每个JSONObject对象。

接着,我们使用mapToObj方法将索引映射为JSONObject对象。然后使用peek方法对JSONObject进行修改,这里我们将age属性值增加了10。

最后,我们使用forEach方法打印出修改后的JSONObject对象,并输出整个JSONArray对象。

通过使用流(Stream),我们可以简洁地实现JSONArray的批量修改某个值

JSONArray批量修改某个值。用stream

原文地址: https://www.cveoy.top/t/topic/iNh8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录