有一个基本类 A 根据不同需求需要转换为 B 或 C 或 D ,使用 @JsonSerialize 只能指定单个自定义序列化器,有没有办法支持动态的序列化策略
1
stranchong Nov 23, 2021 不支持,只能根据需求用 对应策略的 ObjectMapper 序列化
|
2
INTOX8O OP @stranchong 看来只能 mapstruct 转一次了。。。
|
3
bigbyto Nov 23, 2021
没理解你描述的意思,举个例子?
|
4
chendy Nov 23, 2021
继承同一个父类然后 jsonSubType ?
|
5
XieBoCai Nov 23, 2021
用泛型可以不?
|
6
BBCCBB Nov 23, 2021
可以在你的 serialize 里获取当前线程的变量, 从而来执行具体的策略..
你序列化之前设置一下这个变量, 用完后 clear 掉. 比如搞个 threadlocal, 这也是没有办法的办法.. 除非实在没办法. 不要这样搞. |
7
BBCCBB Nov 23, 2021
或者 a 类型搞成 object? 然后再把 b,c,d 设置进去..
|
8
xuanbg Nov 23, 2021
反序列化方法不是支持泛型参数?把你预期的类型传进去不就好了吗。
|
10
28Sv0ngQfIE7Yloe Nov 23, 2021
@wsfmzq #9 如何解决的可以分享下吗。作为小白的我看完这个帖子似乎也没啥收获。。
|
11
INTOX8O OP @Morii 按照 8 楼和 5 楼的泛型都可以,最后觉得自己这个需求有点奇葩还是决定自己写策略一个个 builder 进去算了。。。。因为重写多个反序列化方法和自已写一个专门的转换差不多
|
12
zhady009 Nov 24, 2021 Serializer 实现这个接口 ContextualSerializer
根据需求来返回对应新的 Serializer |