记一个类型转换时候的bug

记一个日常小坑,平时没注意导致的类型转换错误

  • 多话不说,先上代码
import com.alibaba.fastjson.JSON;
import org.junit.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class JsonTest {

    @Test
    public void jsonTest(){
        List<Long> ids = new ArrayList<>();
        ids.add(1l);
        ids.add(2l);

        Map map = new HashMap(ids.size());
        map.put("list", JSON.toJSON(ids));

        List<String> receiveIds = (List<String>) map.get("list");
        System.out.println(receiveIds.getClass().getName());
        for (String r : receiveIds) {
            System.out.println(r);
        }
    }
}

看起来稀松平常的代码,出了bug:

java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String

为什么呢?
我么看看List receiveIds 的类型一下知道了,他的真实面目是
com.alibaba.fastjson.JSONArray,我强转并没有起到作用。
在这里插入图片描述
那问题来了,强转没用的话,我们怎么办呢?

        List<String> receiveIds = JSONObject.parseArray(map.get("list").toString(), String.class);

解决了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值