【问题标题】:How to use Jackson to deserialise list in java?java - 如何使用Jackson反序列化java中的列表?
【发布时间】:2017-04-03 12:06:29
【问题描述】:

我的 Java 类是

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

如何反序列化?

【问题讨论】:

    标签: jackson2


    【解决方案1】:

    我认为您应该将 UserInfo 设为静态。 Jackson 无法构造 UserInfo 类。

    我尝试了该更改,它对我有用:

    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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      相关资源
      最近更新 更多