mq取出消息体中的某些数据时,会报数据转换异常,类型不对!

  我们在写项目的时候,有很多时候会遇到用到消息的场景,但是有时候我们在接收消息的时候,明知道接受的消息的某些字段属于某些类型,但是在我们强转的时候就会报错,那是因为我们把它放进map的时候,他会自己再进行一次包装,所以有时候取值的时候会报错,下面是我就自己接受mq消息的时候遇到的两种消息体报错,来说一下消息体的字段转换!
首先是如果消息体里面含有DTO的时候,首先我们知道他是某种DTO,但是如果我们直接进行强转的话,会转换成空的DTO,如:
TestDTO testDTO =(TestDTO)map.get("testDTO");
这个时候我们获取到的DTO就有可能会变成空的,那么我们应该怎么办呢?
如下:
JSONObject jsonObject = (JSONObject) map.get("testDTO");
TestDTO testDTO = jsonObject.toJavaObject(TestDTO.class);
首先,我们要先将接受到的DTO转化为JSONObject,然后再将这个JSONObject转化为我们想要的DTO,就能够得到我们想要的DTO了。

还有一种就是我们想要的是某一种类型的字段,但是有可能经过消息的map封装之后,取出来就会报错:数据类型不一致,无法将某类型转化为某类型,如下:

BigDecimal bigDecimal = new BigDecimal(11);

testDTO =(BigDecimal)map.get("testDTO");

首先我们可以先new 一个该对象,然后把想要放的对象取出来放进去,如下:

new BigDecimal(map.get("hasReceived").toString());
这样我们就可以获取到想要的BigDecimal类型的数据了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值