JSONObject.put()不会存储另一个JSONObject的引用

时间:2012-12-07 16:44:29

标签: java json-lib

您是否注意到如果将JSONObject放入另一个带有put()的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")));

2张照片的输出不同,因此jtmp2不直接存储在jtmp1中。

这是正常行为吗?它有什么变通方法吗?我对JAVA很新,但在我看来,这不是人们所期望的行为。

1 个答案:

答案 0 :(得分:0)

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