1.采过的坑
java中如果是直接将某个对象强转成List,是无法强转成功的!
如:
{
"BUSINESSCONTENT": [
{
"DATAID": "000001",
"DATE": "2020-11-26 11:17:38",
"HCLK": "200.0",
"HCLT": "-150.0",
"JYQS": "9",
"PVF": "-2200.0",
"PVZ": "2200.0",
"YZQH": "1"
}
],
"DATAID": "000315",
"HMAC": "0000",
"SEC": "0",
"TIME": "2020-11-26 11:17:38",
"TYPE": "01",
"USERID": "4406060263",
"VERSION": "1.0"
}
想将上面的 json 对象中的 BUSINESSCONTENT获取之后转成 List对象
代码如下:
List<Configure> configures = (List<Configure>) businesscontent;
这种直接转换是有问题的,代码如下,我们运行调试下:
调试结果如下:
2.改正如下:
定义一个方法强转Object到List
/**
* Object对象转 List集合
*
* @param object Object对象
* @param clazz 需要转换的集合
* @param <T> 泛型类
* @return
*/
public static <T> List<T> changeList(Object object,Class<T> clazz){
try {
List<T> result = new ArrayList<>();
if (object instanceof List<?>){
for (Object o : (List<?>) object) {
String string = JSONObject.toJSONString(o);
T t = JSONObject.parseObject(string, clazz);
result.add(t);
}
return result;
}
return null;
}catch (Exception e){
e.printStackTrace();
log.error(e.getMessage());
}
return null;
}
JSONObject是Alibaba的fastJson包
调试结果如下: