我的应用程序的工作有点像中间人,我必须从一个端点到另一个端点以及从另一个端点获取请求的数据。
但是,每个DTO都具有“敏感”信息(ID),因此从A-> B进入时,我必须对Integer字段进行转码并返回编码数据的String值。当从B-> A转到时,我必须将String数据解码回其原始Integer标识符值。全部使用JSON。
例如对于PersonDTO,如果A发送:
{
"id":85,
"name":"John"
}
B会得到:
{
"id":"xDf8rt",
"name":"John"
}
如何设置自定义序列化程序以在序列化和反序列化时将字段从int转换为String并将String转换为int?
我可以很容易地做到A-> B:
public class PersonDTO {
@JsonProperty(access = Access.WRITE_ONLY)
private int id;
@JsonProperty(access = Access.READ_ONLY, value = "id")
private String idRef;
// public getter/stter
}
但是反过来又没有创建新的DTO(因为我必须对100多个DTO执行此操作,并且不能碰到从A发送来的DTO)...考虑过要制作通用的序列化器/解串器,但是不知道在哪里开始或处理具有不同id字段名称的不同DTO。