Jackson-DTO int到String的转换

时间:2019-01-24 13:40:22

标签: java jackson dto

在REST客户端上工作,该REST客户端调用另一个返回以下对象的服务器:

public class ObjectOriginal {
   private int id;
   private String name;

   // constructor/getters/setters
}

我需要混淆ID。为此,我正在使用一个已经存在的服务,该服务将id转换为唯一的生成的String,以便调用我的服务的人不知道REAL ID,但仍可以使用唯一的字符串请求有关它的信息。

所以我基本上是想将这个对象返回给调用者:

public class ObjectNew {
   private String id;
   private String name;

   // constructor/getters/setters
}

我是否需要拥有ObjectOriginalDTO的副本+创建一个ObjectNew DTO +创建一个映射器才能从一个映射到另一个映射。 还是可以将Jackson配置为将id字段反序列化为String而不是int?

2 个答案:

答案 0 :(得分:0)

您可以使用自己的序列化器/解串器来执行此操作。 您必须实现自己的序列化器/反序列化器,该序列化器将分别BeanSerializerModifier/BeanDeserializerModifier进行扩展,并使用它们来配置模块,或者使用tutorial中所述的基于注释的基础解决方案,网络上有很多参考资料这样的事情。那么您将可以更灵活地控制id的映射方式。

答案 1 :(得分:0)

如果您不想使用自定义解串器,则可以:

public class ObjectNewDto {
   private String id;
   private String name;

   // constructor/getters/setters
}

和另一个对象:

public class ObjectOriginal {
   private int id;
   private String name;
 // construxtor/getters/settes
}

现在,在验证ObjectNewDto之后,您可以通过混淆器服务将其映射到ObjectOriginal,然后验证该Object Original,依此类推...