パラメーターを渡すバックエンドの MVC 受け入れタイプは List を使用できません。ArrayList に変更する必要があります。
1: このエラーは通常、Jackson ライブラリを使用して JSON オブジェクトを逆シリアル化するときに発生します。「jackson-databind」と呼ばれる Jackson ライブラリは、JSON 形式のデータを操作するための Java ライブラリです。JSON 文字列を Java オブジェクトに変換したり、Java オブジェクトを JSON 文字列に変換したりできます。
JSON を逆シリアル化するとき、Jackson はデフォルトのコンストラクターに従ってオブジェクト インスタンスを作成し、セッター メソッドを使用してプロパティを設定する必要があります。ただし、List はインターフェイスであるため、デフォルトの引数なしのコンストラクターがないため、このエラーが発生します。
この問題を解決するには 2 つの方法があります。
List インターフェイスを実装し、引数なしのコンストラクターと必要なすべてのセッター メソッドを提供する具象クラスを作成します。例えば:
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 の実装クラスをマークします。たとえば、 @JsonDeserialize(using = ArrayListDeserializer.class) アノテーションを 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;
// 省略其他属性和方法
}
このようにして、Jackson は逆シリアル化時に ArrayList クラスを使用して List インターフェイスを実装し、JSON データを通常どおりに読み取ります。