杰克逊自定义序列化程序或值对象?

Posted

技术标签:

【中文标题】杰克逊自定义序列化程序或值对象?【英文标题】:Jackson custom serializer or value object? 【发布时间】:2016-01-08 01:05:34 【问题描述】:

在专注于 ios 几年后,我将重返后端开发。我选择了带有 Kotlin 的 Spring Boot。

我希望有一个以领域为中心的、通用的、可重用的模型对象。 对于服务调用,我想返回特定于用例的响应,其中有效负载输入/输出只是该特定场景的信息。 (我们可以称之为“合同优先”或“不要泄露你的胆量”)

在过去,我可能通过使用类似Dozer 的框架将信息从可重用模型对象映射到可序列化的值对象来实现服务。

另外,我正在考虑为给定端点注册一个自定义序列化程序,例如 Django Rest Framework 所做的。 (不知道这将如何工作给杰克逊通过注释序列化)。

问题:

有没有一种简单的方法可以将自定义序列化程序与杰克逊一起使用来做我想做的事? 还是继续使用我多年前使用的价值对象方法更好?

【问题讨论】:

我想说这个问题应该在programmers.stackexchange.com上问 @luboskrnac 在要点中的两个问题中,我认为第一个是 SO 类型的问题。也许我可以将第二个移到 StackExchange。 【参考方案1】:

根据您的用例,使用专用 DTO 可能是个好主意。正如您所知,您可以从 Jackson 获得更大的灵活性,而无需为每个场景实现自定义序列化程序 - Jackson Json Views are now supported in Spring MVC 并且非常有用。

【讨论】:

以上是关于杰克逊自定义序列化程序或值对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除杰克逊自定义序列化程序生成的空值?

java 杰克逊自定义模块,定义日期序列化方式

某些字段的杰克逊 JSON 自定义序列化

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

如何在杰克逊序列化中自定义日期,@JsonSerialize 不起作用

具有完整 POJO 数据绑定的杰克逊自定义过滤器