使用Jackson ObjectMapper对Java对象进行序列化与反序列化

目录

序列化

反序列化

readValue()

readTree()

readValue与readTree的区别

推荐博客


序列化

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

 jackson readTree - 七郎 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值