如何使用 Jackson 反序列化 java 中的列表?
How to use Jackson to deserialise list in java?
我的JavaClass是
public class User {
private List<UserInfo> userInfoList;
public class UserInfo {
private String id;
}
}
我们假设它有 getter、setter 方法。
json 是
{"userInfoList" : [{"id":"a", "id":"b"}]}
我试着像下面这样反序列化它。
objectMapper.readValue(json, User.class);
但是它抛出错误。
Can not construct instance of User$UserInfoList: no suitable constructor found
如何反序列化?
我认为您应该将 UserInfo 设为静态。 Jackson 无法构造 UserInfo class.
我尝试了那个改变,它对我有用:
public class User {
private List<UserInfo> userInfoList;
public static class UserInfo {
private String id;
public UserInfo() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
public List<UserInfo> getUserInfoList() {
return userInfoList;
}
public void setUserInfoList(List<UserInfo> userInfoList) {
this.userInfoList = userInfoList;
}
}
并且:
public class App {
public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
User.UserInfo ui1 = new User.UserInfo();
ui1.setId("a");
User.UserInfo ui2 = new User.UserInfo();
ui2.setId("b");
List<User.UserInfo> userInfoList = new ArrayList<User.UserInfo>();
userInfoList.add(ui1);
userInfoList.add(ui2);
User user = new User();
user.setUserInfoList(userInfoList);
System.out.println(mapper.writeValueAsString(user));
user = mapper.readValue(mapper.writeValueAsString(user), User.class);
}
}
我的JavaClass是
public class User {
private List<UserInfo> userInfoList;
public class UserInfo {
private String id;
}
}
我们假设它有 getter、setter 方法。
json 是
{"userInfoList" : [{"id":"a", "id":"b"}]}
我试着像下面这样反序列化它。
objectMapper.readValue(json, User.class);
但是它抛出错误。
Can not construct instance of User$UserInfoList: no suitable constructor found
如何反序列化?
我认为您应该将 UserInfo 设为静态。 Jackson 无法构造 UserInfo class.
我尝试了那个改变,它对我有用:
public class User {
private List<UserInfo> userInfoList;
public static class UserInfo {
private String id;
public UserInfo() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
public List<UserInfo> getUserInfoList() {
return userInfoList;
}
public void setUserInfoList(List<UserInfo> userInfoList) {
this.userInfoList = userInfoList;
}
}
并且:
public class App {
public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
User.UserInfo ui1 = new User.UserInfo();
ui1.setId("a");
User.UserInfo ui2 = new User.UserInfo();
ui2.setId("b");
List<User.UserInfo> userInfoList = new ArrayList<User.UserInfo>();
userInfoList.add(ui1);
userInfoList.add(ui2);
User user = new User();
user.setUserInfoList(userInfoList);
System.out.println(mapper.writeValueAsString(user));
user = mapper.readValue(mapper.writeValueAsString(user), User.class);
}
}