如何将一个 JSONObject 中的所有值复制到另一个 JSONObject?

问题描述 投票:0回答:1

我知道完全有可能逐一复制每个单独的组件,但这样做非常混乱而且相当难看。是否有一种更简单的方法将所有值从一个 JSONObject 复制到另一个 JSONObject?需要注意的是,我使用的是 json-lib。如果绝对必要的话,我不反对更换工具。重点是,这是一种相当低效的做事方式。

java json copy json-lib
1个回答
4
投票

经过几个小时的搜索,我终于找到了答案。这么简单我有点尴尬。

~

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()
可能还不够。有许多不同的方法可以做到这一点,但它们都取决于您拥有的数据对象类型。要了解如何序列化或反序列化数据对象,您应该尝试搜索“如何序列化/反序列化”。

© www.soinside.com 2019 - 2024. All rights reserved.