Jackson将json串转成List或Map等集合

本文介绍了如何使用Jackson库将JSON字符串转换为List和Map等集合类型,同时避免泛型信息丢失,推荐了两种方法并提供了实例演示。

Jackson将json串转成List、Map等集合时,需要保证集合内的元素泛型不能丢失。
方法一:
此方法每次都需要构建TypeReference参数,比较麻烦,也不够美观,因此不推荐这种方式

public static <T> T json2Obj(String json, TypeReference<T> type) {
    return objectMapper.readValue(json, type);
}
// 使用
json2Obj(json, new TypeReference<List<String>>(){});
json2Obj(json, new TypeReference<Map<String, String>>(){});

方法二:(推荐)

private static JavaType collectionType(Class<?> collectionClz, Class<?> ...elementClz) {
    return om.getTypeFactory().constructParametricType(collectionClz, elementClz);
}
public static List<T> json2List(String json, Class<T> elementClz) {
    objectMapper.readValue(json, collectionType(List.class, clz));
}
public static List<T> json2Map(String json, Class<T> valueClz) {
    objectMapper.readValue(json, collectionType(Map.class, String.class, clz));
}
// 使用
json2List(json, String.class);
json2Map(json. String.class);


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值