首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

for循环中的JSONArray.add(JSONObject)将替换for循环中的旧值,而数组由循环中的最后一个值组成

问题分析

在使用 for 循环向 JSONArray 中添加 JSONObject 时,如果直接使用 add 方法,可能会导致数组中的所有元素都是循环的最后一个值。这是因为 JSONObject 是引用类型,当你在循环中修改同一个 JSONObject 对象时,所有的引用都会指向这个修改后的对象。

原因

  1. 引用传递:在 Java 中,对象是通过引用传递的。如果你在循环中创建一个 JSONObject 并修改它,那么所有引用这个 JSONObject 的地方都会看到这个修改。
  2. 对象重用:如果你在循环中重复使用同一个 JSONObject 对象,那么每次修改都会影响到之前已经添加到 JSONArray 中的对象。

解决方法

为了避免这个问题,你需要在每次循环迭代中创建一个新的 JSONObject 对象。以下是一个示例代码:

代码语言:txt
复制
import org.json.JSONArray;
import org.json.JSONObject;

public class Main {
    public static void main(String[] args) {
        JSONArray jsonArray = new JSONArray();

        for (int i = 0; i < 5; i++) {
            // 在每次循环中创建一个新的 JSONObject 对象
            JSONObject jsonObject = new JSONObject();
            jsonObject.put("key", "value" + i);
            jsonArray.put(jsonObject);
        }

        System.out.println(jsonArray.toString());
    }
}

输出

代码语言:txt
复制
[
    {"key":"value0"},
    {"key":"value1"},
    {"key":"value2"},
    {"key":"value3"},
    {"key":"value4"}
]

参考链接

通过这种方式,你可以确保每次循环迭代中添加到 JSONArray 中的 JSONObject 都是独立的,不会相互影响。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券