Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JSONObject.put()赢了';t存储另一个JSONObject的引用_Java_Json Lib - Fatal编程技术网

Java JSONObject.put()赢了';t存储另一个JSONObject的引用

Java JSONObject.put()赢了';t存储另一个JSONObject的引用,java,json-lib,Java,Json Lib,您是否注意到,如果使用put()将一个JSONObject放入另一个JSONObject,容器JSONObject将不会存储对第一个JSONObject的引用,而是存储一个新的JSONObject 例如: JSONObject jtmp1 = new JSONObject(); JSONObject jtmp2 = new JSONObject(); jtmp1.put("test", jtmp2); System.out.println(System.identityHashCode(j

您是否注意到,如果使用put()将一个JSONObject放入另一个JSONObject,容器JSONObject将不会存储对第一个JSONObject的引用,而是存储一个新的JSONObject

例如:

JSONObject jtmp1 = new JSONObject();
JSONObject jtmp2 = new JSONObject();

jtmp1.put("test", jtmp2);


System.out.println(System.identityHashCode(jtmp2));
System.out.println(System.identityHashCode(jtmp1.getJSONObject("test")));
两次打印的输出不同,因此jtmp2不直接存储在jtmp1中


这是正常的行为吗?有什么解决办法吗?我对JAVA非常陌生,但在我看来,这并不是人们所期望的行为。

我也遇到了这个问题,这似乎是正常的行为,但我在不断复制它时遇到了困难。解决方法是将所有放入和取出的对象视为传递值。这实际上可能是一个问题,但您似乎正在使用的JSON库不再受支持。如果可以,我将更改为GSON,它在语法上与您正在使用的库非常相似,没有此问题,并且当前受支持。

public JSONObject getJSONObject(String key)
public JSONObject put(String key,Object value)的源代码中
对象几乎直接插入到
HashMap
中,并直接从
HashMap
中检索。我的意思是,在对象和JSONObject之间来回转换,但这不应该影响系统?