Spring Boot中同一实体的多个自定义序列化程序

Posted

技术标签:

【中文标题】Spring Boot中同一实体的多个自定义序列化程序【英文标题】:Multiple custom serializers for same entity in Spring Boot 【发布时间】:2017-11-18 01:46:12 【问题描述】:

我正在开发一个 Spring Boot 应用程序。我为一个实体 A 创建了一个自定义序列化程序,并使用 @JsonSerialize(using = CustomSerializer.class) 注释对其进行了注册。每当我在 ResponseEntity 中发送 A 时,都会调用自定义序列化程序,并且到目前为止一切正常。

现在有另一个 API,我需要在其中发送 A 的集合作为响应。但是我不能使用相同的序列化程序来构造 A 的列表,因为响应参数完全不同。我需要为同一个实体再写一个序列化程序。

如何为同一个实体配置 2 个序列化程序?应该根据响应中发送的对象类型调用它们,即当我发送 A 时,应该调用 serializer1,当我发送 Collection 时,应该调用 serializer2。 请帮忙!

【问题讨论】:

【参考方案1】:

一个简单的解决方法是注释集合以使用特定的序列化程序来处理内容。例如

@JsonSerialize(using = CustomSerializer.class)
class A 


class AList 
    @JsonSerialize(contentUsing = AnotherCustomSerializer.class)
    private final List<A> list;

【讨论】:

以上是关于Spring Boot中同一实体的多个自定义序列化程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在自定义反序列化器 Spring Boot 中读取路径变量或 URL 参数

杰克逊自定义反序列化器在 Spring Boot 中不起作用

Spring Boot Jpa框架自定义查询语句返回自定义实体

Spring Boot Jackson - 根据深度选择性序列化嵌入式对象属性

在 Spring Boot 中反序列化多个 LocalDateTime 格式

在 Spring Boot jpa 中将多个外键映射到同一个主键