string类型转list实体类集合,解决:String cannot be cast to java.util.List

本文介绍如何在SpringBoot框架下将字符串类型的参数转换为List实体类集合,特别是通过@RequestParamMap接收前端传值,并利用fastjson的parseArray方法解决转换过程中出现的类型不匹配问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

string类型转list实体类集合


springboot框架
controller层用@RequestParam Map<String, Object> params接收前端传值,例如

/**
     * 批量更新
     */
    @RequestMapping("/updateBatch")
    public List<MesDectPropertiesEntity> updateBatch(@RequestParam Map<String, Object> params){
List<MesDectPropertiesEntity> mesDectPropertiesEntities= (List<MesDectPropertiesEntity>) params.get("mesDectPropertiesEntities");
        return mesDectPropertiesEntities;
    }

用map接收list集合报:String cannot be cast to java.util.List
使用阿里的fastjson,只需要一行代码解决
List list = JSON.parseArray(“你的json字符串”, Model.class); (Model是你的实体)
修改为:

List<MesDectPropertiesEntity> mesDectPropertiesEntities = JSON.parseArray(params.get("mesDectPropertiesEntities").toString(), MesDectPropertiesEntity.class);

解决!

参考:https://blog.csdn.net/baidu_30809315/article/details/77982789

Java编程中,遇到`java.util.HashMap cannot be cast to java.util.List`这个错误,通常是因为试图将一个`HashMap`对象强制换为`List`类型。由于`HashMap`和`List`是Java集合框架中的不同接口,它们之间没有直接的继承关系,因此这种换是不合法的。 要解决这个问题,可以采取以下几种方法: 1. **检查数据类型**:确保你正在处理的数据类型是正确的。如果你的数据实际上是一个`List`,那么你应该使用`List`来接收它,而不是`HashMap`。 2. **换数据结构**:如果你的数据是一个`HashMap`,但你需要使用`List`来操作它,你可以将`HashMap`换为`List`。例如,可以将`HashMap`的键或值换为`List`。 3. **使用泛型**:确保你在使用泛型时,类型参数是正确的。泛型可以帮助你在编译时捕获类型错误。 以下是一个示例代码,展示了如何将`HashMap`的键和值换为`List`: ```java import java.util.*; public class HashMapToListExample { public static void main(String[] args) { // 创建一个HashMap HashMap<String, Integer> hashMap = new HashMap<>(); hashMap.put("One", 1); hashMap.put("Two", 2); hashMap.put("Three", 3); // 将HashMap的键换为List List<String> keyList = new ArrayList<>(hashMap.keySet()); // 将HashMap的值换为List List<Integer> valueList = new ArrayList<>(hashMap.values()); // 输出结果 System.out.println("Keys: " + keyList); System.out.println("Values: " + valueList); } } ``` 在这个示例中,我们首先创建了一个`HashMap`,然后分别将键和值换为`List`。这样就可以避免类型换错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值