传参后端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 数据