Jackson序列化与反序列化

这篇博客详细介绍了如何使用Jackson库进行序列化和反序列化操作。内容包括对象如何转换为JSON,以及如何利用JavaType进行反序列化,特别是针对List和Map泛型的反序列化策略进行了讲解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Jackson

jackson实现序列化(对象转为json)

  • 需实现Serializable接口
ObjectMapper mapper = new ObjectMapper();
Person person = new Person();
...
String jsonString = mapper.writeValueAsString(student);

jackson实现反序列化

JavaType反序列化

ObjectMapper mapper = new ObjectMapper();
Person deserializedPerson = mapper.readValue(jsonString, Person.class)
  • 自定义类中的变量名与json串中字段名称相同时,则自动进行封装。若无法避免名称不一致问题时,则可使用**@JsonProperty**进行匹配
public class Person {
	@JsonProperty("name")
	private String personName;
}

List泛型反序列化

CollectionType javaType = mapper.getTypeFactory()
.constructCollectionType(List.class, Person.class);
List<Person> personList = mapper.readValue(jsonInString, javaType);
List<Person> personList = mapper.readValue(jsonInString, new
    TypeReference<List<Person>>(){});

Map泛型反序列化

// 第二参数是 map 的 key 的类型,第三参数是 map 的 value 的类型
 MapType javaType =
    mapper.getTypeFactory().constructMapType(HashMap.class,String.class,
    Person.class);
 Map<String, Person> personMap = mapper.readValue(jsonInString,
    javaType);
 Map<String, Person> personMap = mapper.readValue(jsonInString, new
    TypeReference<Map<String, Person>>() {});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值