Jackson json转成java对象(ObjectMapper)

上接:Jackson 处理json-准备(ObjectMapper)

说明

本文介绍,将JSON字符串反序列化成 java对象

json转javabean

String json = "{\"code\":10000,\"msg\":\"请登录!\"}";
ObjectMapper mapper = new ObjectMapper();
JsonResult result = mapper.readValue(json, JsonResult.class);

json转list

简单:

String json="[1,2,3]";
ObjectMapper mapper = new ObjectMapper();
try {
    List<Integer> list=mapper.readValue(json,List.class);
    for(Integer item:list){
        System.out.println(item);
    }
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

执行结果:

1
2
3

复杂:

将 json 转成 java对象,然后放入到 List 中

先要先反序列化复杂类型
使用ObjectMapper的getTypeFactory().constructParametricType(Class<?> parametrized, Class<?>... parameterClasses)方法

String json="[{\"name\":\"root\",\"pwd\":\"123456\"},{\"name\":\"user\",\"pwd\":\"111111\"}]";
ObjectMapper mapper = new ObjectMapper();
JavaType javaType = mapper.getTypeFactory().constructParametricType(List.class, Student.class);
try {
    List<Student> list=mapper.readValue(json,javaType);
    for(Student std:list){
        System.out.println(String.format("%s--%s", std.getName(),std.getPwd()));
    }
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

Student:

class Student{

    private String name;
    private String pwd;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

}

执行结果:

root--123456
user--111111

json转Map

String json="{\"password\":\"123456\",\"username\":\"root\"}";
ObjectMapper mapper = new ObjectMapper();
try {
    Map<String,String> map=mapper.readValue(json,Map.class);
    for(Map.Entry<String,String> entry:map.entrySet()){
        System.out.println(entry.getKey()+"--"+entry.getValue());
    }
} catch (JsonProcessingException e) {
    e.printStackTrace();
}

原文出处:/show_1IX34KjjVI2j.html