Jackson - DTO int 到 String 的转换

Jackson - DTO int to String conversion

正在调用另一个服务器的 REST 客户端,该服务器 return 具有以下对象:

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

   // constructor/getters/setters
}

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

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

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

   // constructor/getters/setters
}

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

您可以使用自己的 Serializer/Deserializer 来完成此操作。 你必须实现你的 Serializer/Deserializer 将分别扩展 BeanSerializerModifier/BeanDeserializerModifier 并用它们配置你的模块或者使用注释基础解决方案,如本 tutorial 中所述,有很多参考资料网络这样的事情。那么您将可以更好地控制映射 id.

的方式

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

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 等等...