SpringMVC传参报No primary or single unique constructor found for interface java.util.List错误

传参后端MVC接受类型不可以使用List,要修改为ArrayList

1:这个错误通常出现在使用 Jackson 库反序列化 JSON 对象时。Jackson 库名为 “jackson-databind”,是一个用于处理 JSON 格式数据的 Java 库。它可以将 JSON 字符串转为 Java 对象或者将 Java 对象转成 JSON 字符串。

在反序列化 JSON 时,Jackson 需要根据默认构造函数来创建对象实例,并使用 setter 方法来设置属性。但是,由于 List 是一个接口,它没有默认的无参构造函数,因此就会出现这个错误。

解决这个问题的方法有两种:

创建一个具体的类来实现 List 接口,并提供一个无参构造函数和所有的必须 setter 方法。例如:

public class MyList<T> implements List<T> {
    
    
    private List<T> list = new ArrayList<>();
    
    public MyList() {
    
    
        // 无参构造函数
    }
    
    // 所有的必须 setter 方法
    @Override
    public int size() {
    
    
        return list.size();
    }
    
    // 省略其他方法
}

2:使用 Jackson 提供的注解标记 List 的实现类。例如,在 List 类型的属性上加上 @JsonDeserialize(using = ArrayListDeserializer.class) 注解:

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.deser.std.ArrayListDeserializer;

public class MyClass {
    
    
    @JsonDeserialize(using = ArrayListDeserializer.class)
    private List<Integer> myList;
    
    // 省略其他属性和方法
}

这样,Jackson 反序列化时就会使用 ArrayList 类来实现 List 接口,并正常读取 JSON 数据

猜你喜欢

转载自blog.csdn.net/qq_19891197/article/details/131293522
今日推荐