错误示范(伪代码):
@Data
public class User {
private String userName;
private String addr;
private int age;
private List<Girlfriend> girlfriends = new ArrayList<>();
@Data
public class Girlfriend {
private String girlName;
private int girlAge;
private String girlAddr;
}
}
然后我在调用这个接口insert的时候就报错了:
JSON parse error: Cannot construct instance of com.drm.entity.User$Girlfriend
(although at least one Creator exists): can only instantiate non-static inner class by using default, no-argument constructor; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of com.drm.entity.User$Girlfriend
(although at least one Creator exists): can only instantiate non-static inner class by using default, no-argument constructor\n at [Source: (PushbackInputStream); line: 5, column: 7] (through reference chain: com.drm.entity.User[“girlfriends”]->java.util.ArrayList[0])
产生原因:在进行绑定的时候是采用的静态类调用方式创建内部类实例
解决方法:把内部类置为static即可;
伪代码:
@Data
public class User {
private String userName;
private String addr;
private int age;
private List<Girlfriend> girlfriends = new ArrayList<>();
@Data
public static class Girlfriend {
private String girlName;
private int girlAge;
private String girlAddr;
}
}