目录
序列化
ObjectMapper mapper = new ObjectMapper();
//序列化
String jsonString = mapper.writeValueAsString(object);
反序列化
readValue()
ObjectMapper mapper = new ObjectMapper();
//单个对象
User user = (User) mapper.readValue(jsonString,User.Class);
//集合对象
//创建集合类型
JavaType javaType = mapper.getTypeFactory().constructCollectionType(List.class,User.class);
List<User> users = (List<User>)mapper.readValue(jsonString,javaType);
readTree()
ObjectMapper mapper = new ObjectMapper();
//单个对象
JsonNode node = mapper.readTree(jsonString);
String userName = node.path("userName").asString();
String age = node.path("age").asInt();
String address = node.path("address").asText();
//集合对象
JsonNode rootNode = mapper.readTree(jsonString);
List<User> list = new ArrayList<>();
for(JsonNode jsonNode:rootNode){
User user = new User();
user.setUserName(node.path("userName").asString());
user.setAge(node.path("age").asInt());
user.setAddress(node.path("address").asText());
list.add(user);
}
/*
node.path()与node.get()具有相同的功能,不同点在于:
若key不存在,node.get()返回null,node.path()会报missing node。
*/
readValue与readTree的区别
使用readValue需要创建JavaBean对象,如User类。在调用mapper.readValue(),需要传入User.Class作为参数。
使用readTree不需要创建JavaBean对象,但是需要自己一层层的解析JsonNode。
推荐博客
Jackson的用法实例分析,readTree解析JSON字符串_lqk1603的专栏-优快云博客_objectmapper.readtree