上接: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();
}