3

你有没有注意到,如果你用 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 很陌生,但我认为这不是人们所期望的行为。

4

1 回答 1

0

我也遇到了这个问题,这似乎是正常行为,但我一直无法重现它。解决方法是将所有被放入和取出的对象视为传递值。这实际上可能是一个问题,但您似乎正在使用的那个 JSON 库不再受支持。如果可以的话,我会改成 GSON,它在语法上与您正在使用的库非常相似,没有这个问题,并且目前受支持。

于 2013-01-22T20:23:12.047 回答