Parámetro de paso de SpringMVC No se encontró un constructor principal o único para la interfaz java.util.List error

El tipo de aceptación de MVC del backend de paso de parámetros no puede usar List, debe cambiarse a ArrayList

1: este error generalmente ocurre cuando se usa la biblioteca Jackson para deserializar objetos JSON. La biblioteca Jackson, llamada "jackson-databind", es una biblioteca de Java para trabajar con datos en formato JSON. Puede convertir cadenas JSON en objetos Java u objetos Java en cadenas JSON.

Al deserializar JSON, Jackson necesita crear instancias de objetos de acuerdo con el constructor predeterminado y usar métodos de establecimiento para establecer propiedades. Sin embargo, dado que List es una interfaz, no tiene un constructor predeterminado sin argumentos, por lo que se produce este error.

Hay dos formas de resolver este problema:

Cree una clase concreta que implemente la interfaz List y proporcione un constructor sin argumentos y todos los métodos establecidos necesarios. Por ejemplo:

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

2: Use las anotaciones proporcionadas por Jackson para marcar la clase de implementación de List. Por ejemplo, agregue la anotación @JsonDeserialize(using = ArrayListDeserializer.class) a la propiedad del tipo List:

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;
    
    // 省略其他属性和方法
}

De esta manera, Jackson usará la clase ArrayList para implementar la interfaz List al deserializar y leer los datos JSON normalmente.

Supongo que te gusta

Origin blog.csdn.net/qq_19891197/article/details/131293522
Recomendado
Clasificación