【集合】Map使用时常见问题集锦(持续更新)

Map是Java开发中常用的集合,下面记录使用过程中常见的问题。

实体类中的boolean类型转Map<String,String>后,取出来报错

现在要将实体类转为Map<String,String>,然后在其他地方取出来。

SmsDto smsDto=new SmsDto();
//sendFlag是boolean类型
smsDto.setSendFlag(true);
Map<String,String> map=JSONObject.parseObject(JSON.toJSONString(smsDto),Map.class);
map.put("delay",Boolean.toString(true));
System.out.println(map.get("delay"));
System.out.println(map.get("sendFlag"));

结果运行时就直接报错了:

Exception in thread "main" java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
	at cn.ali.station.test.TestController.main(TestController.java:186)

报错的地方其实就是最后一行中map.get(“sendFlag”)。

原因在于实体类中是boolean类型,然后就强行转为Map<String,String>了,所以在获取时就会直接处理转换异常的错误。

那么解决的办法有两种:

  • 将Map<String,String> map改为Map<String,Object> map
  • 将实体类中的boolean类型的字段取出来,转为String后,再放到map中。举例:
SmsDto smsDto=new SmsDto();
//sendFlag是boolean类型
smsDto.setSendFlag(true);
Map<String,String> map=JSONObject.parseObject(JSON.toJSONString(smsDto),Map.class);
map.put("sendFlag",Boolean.toString(smsDto.isSendFlag()));
System.out.println(map.get("sendFlag"));

这样获取时以String类型获取就不会出错了。

类似的问题,时间戳的也要格外注意。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值