jackson将json数组转换为List的两种方式

今天提供接口,发现协议设定上有需要将json数组转换为List的设计!避免大家踩坑,故总结一下两种方式!

json数组大概为这种格式:

jsonString=[{"id": "123","name": "李四",}, {"id": "6666","name": "李五",}]

一、介绍

两种方式都是依赖的ObjectMapper类!

ObjectMapper类是Jackson库的主要类。它提供一些功能将转换成Java对象匹配JSON结构,反之亦然。它使用JsonParser和JsonGenerator的实例实现JSON实际的读/写。

第一种方式:

public void testConvert() {
    final ObjectMapper mapper = new ObjectMapper();    
    jsonString=[{"id": "123","name": "李四",}, {"id": "6666","name": "李五",}];
    JavaType collectionType = getCollectionType(mapper, List.class, DtoBean.class);
    List<DtoBean> lst =  (List<DtoBean>)mapper.readValue(jsonString, collectionType);
}

/**   
 * 获取泛型的Collection Type  
 * @param collectionClass 泛型的Collection   
 * @param elementClasses 实体bean   
 * @return JavaType Java类型     
 */  
public static JavaType getCollectionType(ObjectMapper mapper,Class<?> collectionClass, Class<?>... elementClasses) {
        return mapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
    }

但是这种方式的 constructParametricType()方法为过时方法,所以不建议再继续使用!

第二种方式:

public void testConvert() {
    final ObjectMapper mapper = new ObjectMapper();    
    jsonString=[{"id": "123","name": "李四",}, {"id": "6666","name": "李五",}];
    List<DtoBean> listll = mapper.readValue(jsonString, new TypeReference<List<DtoBean>>(){});
}

第二种方式不仅未过时,而且使用起来较简洁!

  • 9
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值