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")));

2 つのプリントの出力は異なるため、jtmp2 は jtmp1 に直接保存されません。

これは正常な動作ですか?回避策はありますか?私は Java を初めて使用しますが、私の意見では、これは期待される動作ではありません。

4

1 に答える 1

0

私もこの問題に遭遇しました。これは正常な動作のようですが、一貫して再現するのに苦労しました. これを回避するには、入れたり取り出したりするすべてのオブジェクトを値渡しとして扱います。おそらく実際には問題ですが、使用していると思われる JSON ライブラリはサポートされなくなりました。可能であれば、使用しているライブラリと構文が非常に似ていて、この問題がなく、現在サポートされている GSON に変更します。

于 2013-01-22T20:23:12.047 に答える