繁体   English   中英

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

[英]Copying variables from one POJO to another

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

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

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

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

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

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

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

您可以使用Gson完成

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM