黑马程序员技术交流社区

标题: 记录多态如何序列化与反序列化 [打印本页]

作者: 逆风TO    时间: 2020-4-14 11:21
标题: 记录多态如何序列化与反序列化
前言
最近在公司项目中遇到了多态序列化异常的问题,具体详情如下:
[Java] 纯文本查看 复制代码
org.springframework.http.converter.HttpMessageConversionException: Type definition error: [simple type, class com.x.x.x.Payment]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `com.x.x.x.Payment` (no Creators, like default construct, exist): abstract types either need to be mapped to concrete types, have custom deserializer, or contain additional type information

项目中需要用户添加自己的收款方式,而收款方式又分为ABC三种, 继承了Payment这个类,接口代码如下:
[Java] 纯文本查看 复制代码
        //隐去了请求url和类型
    @ApiOperation("添加收款方式")
    public ResultInfo<? extends Payment> createPayment(
            @RequestBody Payment req) {

        return ResultInfo.success(xx.createPayment(req));
    }
解决方法如下:
[Java] 纯文本查看 复制代码
//在Payment类上加上这些信息
@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,
        include = JsonTypeInfo.As.EXISTING_PROPERTY,
        property = "payment"
)
@JsonSubTypes(value = {
        @JsonSubTypes.Type(value = A.class, name = "A"),
        @JsonSubTypes.Type(value = B.class, name = "B"),
        @JsonSubTypes.Type(value = C.class, name = "C")
})
public class Payment {
//具体字段我就不写了

}
查阅网上资料可得在上述资料中,解决多态最关键的注解就是@JsonTypeInfo
@JsonSubTypes作用于类/接口,用来列出给定类的子类,只有当子类类型无法被检测到时才会使用它,一般是配合@JsonTypeInfo在基类上使用。@JsonSubTypes的值是一个@JsonSubTypes.Type[]数组,里面枚举了多态类型(value对应子类)和类型的标识符值(name对应@JsonTypeInfo中的property标识名称的值,此为可选值,若不制定需由@JsonTypeName在子类上制定)



转自掘金链接:https://juejin.im/post/5e951c5b6fb9a03c37304176






作者: 你不爱我    时间: 2020-4-20 09:57
厉害了                       
作者: jsnoob    时间: 2020-4-20 09:58
加油加油!!!
作者: 逆风TO    时间: 2020-4-20 09:59
感谢分享哦~
作者: zhaosongzhi    时间: 2020-4-20 09:59
感谢分享
作者: zhaosongzhi    时间: 2020-4-20 10:09
感谢分享
作者: zhaosongzhi    时间: 2020-4-20 10:18
感谢分享
作者: 王锦    时间: 2020-4-20 10:20
66666666666666
作者: zhaosongzhi    时间: 2020-4-20 10:27
感谢分享
作者: zhaosongzhi    时间: 2020-4-20 10:36
感谢分享
作者: 我是小圆圆    时间: 2020-4-20 10:44

感谢分享哦~
作者: zhaosongzhi    时间: 2020-4-20 10:45
感谢分享
作者: 我是小圆圆    时间: 2020-4-20 10:46

感谢分享哦~
作者: duanshaobo    时间: 2020-4-20 10:48
锄禾我日当午, 汗滴这禾下土, 谁知那盘中餐, 粒粒他皆辛苦
作者: 半个程序员    时间: 2020-4-20 10:53
666666666666666666
作者: sdjadyhm    时间: 2020-4-20 10:55
666666666666
作者: 大安    时间: 2020-4-20 11:10
棒棒哒  坚持更新哦
作者: Emmmmm~    时间: 2020-4-20 11:23

感谢分享哦~
作者: hongping    时间: 2020-4-20 11:51

感谢分享哦~
作者: 123木头人555    时间: 2020-4-20 11:57
66666666666666666666666
作者: 孙丽    时间: 2020-4-20 12:58
66666666666666666666666666666
作者: 举个栗子    时间: 2020-4-20 14:18
6666666666666666666666
作者: daoqin    时间: 2020-4-20 15:01
感谢分享哦~
作者: daoqin    时间: 2020-4-20 15:03
感谢分享哦~
作者: 竹竹竹竹    时间: 2020-4-22 10:40
6666666666666666
作者: 霍尔    时间: 2020-4-23 09:16
6666666666666666666
作者: 王微    时间: 2020-4-23 09:29

作者: 大智叔叔    时间: 2020-4-23 09:42
感谢分享哦~
作者: 哦嗨呦    时间: 2020-4-23 10:59
好人一生平安
作者: 章鱼顶呱呱    时间: 2020-4-23 11:38
6666666666666666666666
作者: lzq123    时间: 2020-4-23 11:42
6666666666666
作者: hello!!!    时间: 2020-4-23 11:42

作者: 咨询部王丹    时间: 2020-4-23 11:48
加油加油加油
作者: 马洁    时间: 2020-4-23 13:59
这是一篇干贴
作者: 小公举    时间: 2020-4-23 17:55
太厉害了吧
作者: 我爱我1022    时间: 2020-4-23 18:01

作者: zplxwl    时间: 2020-4-23 20:02
感谢分享哦~
作者: json0314    时间: 2020-4-23 20:25
感谢分享
作者: manyihang    时间: 2020-4-23 21:44
66666666666666
作者: 素问    时间: 2020-4-23 22:28
谢谢分享,加油!~!!!~
作者: 1467584    时间: 2020-4-23 22:43
666666666666666666666666666666
作者: 殷凯老师    时间: 2020-4-23 22:47
666666666666666
作者: 耙丫丫    时间: 2020-4-23 23:43
66666666666666666666666666
作者: kdhdjdj    时间: 2020-4-24 09:49
感谢分享哦~
作者: 雨落轻舟    时间: 2020-4-24 10:46
技术大咖
作者: lvxinvip    时间: 2020-4-24 10:54

作者: mydorling11    时间: 2020-4-24 11:10
2133333333333333333333333
作者: 零度☆黎明    时间: 2020-4-24 12:16
棒棒哒 ..................... ..................
作者: yujq    时间: 2020-4-24 12:27
66666666666666666666666
作者: 黑马程序员啊    时间: 2020-4-24 14:27
66666666666666666666
作者: json0314    时间: 2020-5-8 11:16
666666666666
作者: 逆风TO    时间: 2020-5-11 17:01
你不爱我 发表于 2020-4-20 09:57
厉害了

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:03
半个程序员 发表于 2020-4-20 10:53
666666666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:03
逆风TO 发表于 2020-4-20 09:59
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:03
zhaosongzhi 发表于 2020-4-20 10:45
感谢分享

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:03
我是小圆圆 发表于 2020-4-20 10:46
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:03
我是小圆圆 发表于 2020-4-20 10:44
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:03
zhaosongzhi 发表于 2020-4-20 10:36
感谢分享

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:03
sdjadyhm 发表于 2020-4-20 10:55
666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
zhaosongzhi 发表于 2020-4-20 10:27
感谢分享

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
zhaosongzhi 发表于 2020-4-20 10:36
感谢分享

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
zhaosongzhi 发表于 2020-4-20 09:59
感谢分享

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
zhaosongzhi 发表于 2020-4-20 10:27
感谢分享

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
zhaosongzhi 发表于 2020-4-20 09:59
感谢分享

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
我是小圆圆 发表于 2020-4-20 10:44
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
大安 发表于 2020-4-20 11:10
棒棒哒  坚持更新哦

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
sdjadyhm 发表于 2020-4-20 10:55
666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
sdjadyhm 发表于 2020-4-20 10:55
666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
大安 发表于 2020-4-20 11:10
棒棒哒  坚持更新哦

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
zhaosongzhi 发表于 2020-4-20 10:45
感谢分享

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
我是小圆圆 发表于 2020-4-20 10:46
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:04
我是小圆圆 发表于 2020-4-20 10:46
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:05
大安 发表于 2020-4-20 11:10
棒棒哒  坚持更新哦

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:05
Emmmmm~ 发表于 2020-4-20 11:23
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:05
hongping 发表于 2020-4-20 11:51
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:05
我是小圆圆 发表于 2020-4-20 10:44
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:05
半个程序员 发表于 2020-4-20 10:53
666666666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:05
逆风TO 发表于 2020-5-11 17:03
努力呀,加油呀

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
孙丽 发表于 2020-4-20 12:58
66666666666666666666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
举个栗子 发表于 2020-4-20 14:18
6666666666666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
zplxwl 发表于 2020-4-23 20:02
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
lzq123 发表于 2020-4-23 11:42
6666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
大智叔叔 发表于 2020-4-23 09:42
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
哦嗨呦 发表于 2020-4-23 10:59
好人一生平安

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
逆风TO 发表于 2020-5-11 17:06
努力呀,加油呀

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
哦嗨呦 发表于 2020-4-23 10:59
好人一生平安

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
大智叔叔 发表于 2020-4-23 09:42
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
哦嗨呦 发表于 2020-4-23 10:59
好人一生平安

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
王微 发表于 2020-4-23 09:29

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
大智叔叔 发表于 2020-4-23 09:42
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
咨询部王丹 发表于 2020-4-23 11:48
加油加油加油

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:06
马洁 发表于 2020-4-23 13:59
这是一篇干贴

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:07
逆风TO 发表于 2020-5-11 17:06
努力呀,加油呀

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:07
竹竹竹竹 发表于 2020-4-22 10:40
6666666666666666

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:07
哦嗨呦 发表于 2020-4-23 10:59
好人一生平安

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:07
咨询部王丹 发表于 2020-4-23 11:48
加油加油加油

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:07
马洁 发表于 2020-4-23 13:59
这是一篇干贴

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:07
大智叔叔 发表于 2020-4-23 09:42
感谢分享哦~

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:07
哦嗨呦 发表于 2020-4-23 10:59
好人一生平安

努力呀,加油呀
作者: 逆风TO    时间: 2020-5-11 17:07
逆风TO 发表于 2020-5-11 17:06
努力呀,加油呀

努力呀,加油呀




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2