我知道完全有可能逐一复制每个单独的组件,但这样做非常混乱而且相当难看。是否有一种更简单的方法将所有值从一个 JSONObject 复制到另一个 JSONObject?需要注意的是,我使用的是 json-lib。如果绝对必要的话,我不反对更换工具。重点是,这是一种相当低效的做事方式。
经过几个小时的搜索,我终于找到了答案。这么简单我有点尴尬。
~
Json-lib 有一个漂亮的功能,允许您获取当前的 JSONObject 并将整个 JSONObject 解析为字符串。并且已经存在一种从字符串构建 JSONObject 的方法。因此,您需要做的就是将 JSONObject 转换为 String,然后再转换回 JSONObject。您可以将字符串存储为变量(或将其用作返回值),然后只需获取预先存在的 JSONObject 引用并使用该方法从字符串重建 JSONObject。就这么简单。
编辑 - 我想我会给出一个快速的代码示例
JSONObject a = /* pretend a has 100 elements inside */
String temp = a.toString();
JSONObject b = JSONObject.fromObject(temp);
String temp2= b.toString();
if(temp.equals(temp2)){System.out.println("Well done.");}
编辑 2 -- 5 年后回来(并且有了更多的经验),我意识到我无意中偶然发现了序列化和反序列化的概念。
序列化是获取复杂数据对象(在本例中为我的
JSONObject
)并将其转变为基本String
的过程。该 String
仍然包含创建新 JSONObject
所需的所有位,但它是一个简单的 String
,并通过互联网发送 String
值,或将其保存到文件中 - 这些都是事情即使作为初学者程序员,我也知道如何轻松完成。
反序列化是获取序列化值(我在上面创建的
String
)并将其转回我的数据对象的过程 - 在本例中是我的 JSONObject
。现在,请注意——我很幸运,做 toString()
是 serialize 我的 JSONObject
的简单方法。但是,如果您想正确序列化大多数其他对象,toString()
可能还不够。有许多不同的方法可以做到这一点,但它们都取决于您拥有的数据对象类型。要了解如何序列化或反序列化数据对象,您应该尝试搜索“如何序列化/反序列化