在通过不同项目之间调用接口传输数据时
Map<String, Object> idParam = new HashMap<>();
if (queueMsg.size() > 0) {
List<QueueHistEntity> appraised = new ArrayList<QueueHistEntity>();
for (QueueHistEntity hist : queueMsg) {
String id = hist.gethTransCodeId();
Long Hid = hist.gethId();
if (state==1){
if (!ids.contains(id)) {
appraised.add(hist);
ids.add(id);
}
}else if(state==2){
if (!ids.contains(id)) {
appraised.add(hist);
ids.add(id);
}
}
}
if (appraised.size() > 0) {
try {
String response =HttpClientUtils.httpJsonArrayPostRequest("http://" + ip + "/noCheck/queuehistory/add.mvc", appraised, "UTF-8");
System.out.println("--------------上传历史数据-------------"+response);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
从上面代码段传入的List appraised对象 到下面代码段解析时,会出现 java.util.LinkedHashMap cannot be cast to QueueHistoryVo 的类型转换异常
public JsonResult add(@RequestBody List<QueueHistoryVo> queueHistoryVo) {
try{
for(QueueHistoryVo vo: queueHistoryVos){
System.out.print("接收到一条post请求");
queueService.add(vo);
}
}catch (Exception e){
e.printStackTrace();
return JsonResult.error();
}
return JsonResult.success();
}
两项目之间的QueueHistory对象类型完全相同,但转换时在for循环时会出错
try{
List<QueueHistoryVo> queueHistoryVos = new ArrayList<>();
for (int i =0; i<queueHistoryVo.size(); i++) {
JSONObject jsonObject = JSONObject.fromObject(queueHistoryVo.get(i));
QueueHistoryVo voo = (QueueHistoryVo)JSONObject.toBean(jsonObject, QueueHistoryVo.class);
queueHistoryVos.add(voo);
}
for(QueueHistoryVo vo: queueHistoryVos){
System.out.print("接收到一条post请求");
queueService.add(vo);
}
}catch (Exception e){
e.printStackTrace();
return JsonResult.error();
}
在try catch代码块中对传入的queueHistory再次进行Json解析,然后就不会再有异常发生