将变量从一个 POJO 复制到另一个 POJO



我有一个POJO 'A',它有30多个变量。我有另一个 POJO "B",大多数变量与"A"中的变量相同。

例如,A 有一个变量 var1 作为

LocalDate 列表,B 有一个同名 var1 但作为 List of Long (long 值的日期(的属性。现在,从REST服务中,我得到了"B"的响应,我的老客户仍在使用"A"。我想将响应从 B 转换为 A。由于除变量 var1 外,我的所有其他值都相同,因此将所有其他属性从 var2 复制到 var1 的最有效方法是什么?有没有提供这种方法的库?

最好的方法是编写一个映射器方法,将 A 的对象映射到 B 的对象。这是最安全和推荐的方法。

如果你可以弄脏你的代码......你可以序列化objA,然后将其反序列化为objB。确保所有不可为空的字段在两个对象中都可用,并准备好捕获解析异常。事实上,两个类中的字段名称也应该相同,除非映射到不同的名称(别名((例如,带有某种杰克逊注释(。如果字段的名称不完全相同,则将删除它们。

B objB = Json.deserialize(JSON.serialize(objA), new TypeReference<B>(){});
您可以使用

Gson

Gson gson = new Gson();
Type type = new TypeToken<YourPOJOClass>(){}.getType();
String data = gson.toJson(workingPOJO);
coppiedPOJO = gson.fromJson(data, type);
<</div> div class="one_answers">

您可以使用像推土机这样的映射库来映射具有相同字段的两个类。您可以排除两个 POJO 中不同的字段并自行映射它们。

有关更多详细信息,请参阅此链接 http://dozer.sourceforge.net/

相关内容

最新更新