关于LinkedHashMap转对象的问题,HashMap和list对象的转换

问题原因:

在使用springboot restTemplate调用服务时,返回数据类型是LinkedHashMap<String,ArrayList<LinkedHashMap>>,需要将ArrayList<LinkedHashMap>转化成ArrayList<Cmpmanifest>。
在这里插入图片描述
而直接将 LinkedHashMap强转 Cmpmanifest 会出现类型转换异常。
在这里插入图片描述

解决办法:

1.遍历map

根据key获取value,遍历取值。这样做太傻了,不可取。

2.引入net.sf.json的jar包,使用特定api进行转换。

//把 ArrayList<LinkedHashMap> 转化成 JSONArray,数组元素是JSONObject
JSONArray jsonArray=JSONArray.fromObject(datas.get("cmpmanifestList"));
//把JSONArray转化成对象数组。
rpcResult.cmpmanifestList = (List<Cmpmanifest>) JSONArray.toCollection(jsonArray, Cmpmanifest.class);

注意:Cmpmanifest对象的构造函数必须是默认的无参构造函数。对象中没有的字段都是 null。
HashMap与JSONObject的转换见链接:https://www.cnblogs.com/z360519549/p/11385118.html

net.sf.json依赖的引入

gradle:

 compile 'net.sf.json-lib:json-lib:2.4:jdk15'

maven:

<dependency>
    <groupId>net.sf.json-lib</groupId>
    <artifactId>json-lib</artifactId>
    <version>2.4</version>
    <classifier>jdk15</classifier>									//此处要加上jdk版本号
</dependency>

这个版本号只能是15,不能是其他,我自己的JDK是1.8的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值