用于在序列化时修改值的自定义注释

时间:2019-07-02 06:56:13

标签: java json serialization reflection annotations

我有一个特定的用例,我正在尝试使用自定义序列化(GSON)和自定义Java注释来解决。

我正在从源中读取json数据,将其转换并将其写入接收器。我的Json具有以下结构:(转换后的Json具有相同的结构,但要转换的标识符具有不同的值)

{
 "someId": "abc", 
 "otherId": "efgh", 
 "metadata": {"id": "xyz", "count": 5},
 "cardId": "qwe123"
 "version": 1.0
}

这将转换为以下模型:

public class Customers {
    @Transform private String someId;   // transform this identifier
    @Transform private String otherId;   // transform this identifier
    private CustomerMetadata metadata;
    private String cardId;    // Do not transform
    private long version;
}

public class CustomerMetadata {
    @Transform private String id;   // transform this identifier
    private int count;
}

我有一个用例,其中我想转换特定的标识符。这种转换由另一个服务执行,该服务接受标识符列表,对其进行转换,然后以相同顺序返回转换后的标识符(字符串类型)。

理想情况下,我只想为单个json文件调用一次此转换服务。我的想法是通过编写自定义序列化器或自定义反序列化器来实现。序列化程序将查找@Transform批注以捕获标识符列表,调用转换服务以接收已转换标识符的列表,最后用转换后的值替换相应的标识符。

此外,我需要以一般的方式实现这一目标,以便我的序列化器不依赖于特定的模型(POJO)。

任何想法如何处理?我愿意使用Jackson提供的类似功能(尽管我没有找到这种用例)

0 个答案:

没有答案