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

时间:2019-04-16 05:24:11

标签: java

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

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

3 个答案:

答案 0 :(得分:2)

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

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

B objB = Json.deserialize(JSON.serialize(objA), new TypeReference<B>(){});

答案 1 :(得分:0)

您可以使用诸如dozer之类的映射库来映射具有相同字段的两个类。您可以排除两个POJO中不同的字段,然后自己映射它们。

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

答案 2 :(得分:0)

您可以使用Gson

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