gpt4 book ai didi

java - .put() 和 .accumulate() 追溯更改值的 JSON 行为

转载 作者:行者123 更新时间:2023-12-02 02:13:21 25 4
gpt4 key购买 nike

在尝试将多个对象累积到 JSONObject 中时,我遇到了相当奇怪的交互。

我正在使用 json-20180813.jar 导入库

参见下面的代码

    import org.json.JSONObject;

JSONObject masterobject = new JSONObject();
JSONObject testobject = new JSONObject();

testobject.put("Key1","Value1");
testobject.put("Key2","Value2");
masterobject.accumulate("masterkey1",testobject);
System.out.println(masterobject.toString(1));
System.out.println("~~~~~~~~~~~~~~~~~");

testobject.put("Key1","Value3");
System.out.println(masterobject.toString(1));

预期的输出类似于:

主 key {值2值1}

不是主 key {value2 value3}

相反,我最终得到了这个

{"masterkey1": {
"Key2": "Value2",
"Key1": "Value1"
}}
~~~~~~~~~~~~~~~~~
{"masterkey1": {
"Key2": "Value2",
"Key1": "Value3"
}}

我的问题是,为什么.put()对masterkey有影响?

注意:如果我使用第二个 new JSONObject() 并累积该对象,这个问题就可以解决,但是我想了解为什么 .put() 编辑另一个对象。

最佳答案

问题在于 .put() 正在修改存储在 masterkey1 键下的对象。

由于在 Java 中一切都是使用指针而不是值来表示的,因此当您修改 testobject 时,您也会看到 ma​​sterobject 中的更改

关于java - .put() 和 .accumulate() 追溯更改值的 JSON 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57316849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com