前端传输数据格式:
{"foodStoreId":"28", "supplyTime":2,"exList":[{"id": 1, "longitude": "113.9321782769", "latitude":"22.5415378147"},{"id": 2, "longitude": "113.93041", "latitude":"22.53332"}, {"id": 3, "longitude": "113.93041", "latitude":"22.53332"}]}
后端接受对象:
@RequestBody Map<String, Object> expressList
exList对象:
实现类:
方式一:
List<ExpressEmployeeInfoExt2> list = (List<ExpressEmployeeInfoExt2>) expressList.get("exList");
可以获取参数,但是不能遍历参数。会报错:
java.util.LinkedHashMap cannot be cast to com.heque.eat.express.pojo.eei.ExpressEmployeeInfoExt2
解决办法:
方式二:
Object object = expressList.get("exList");
JSONArray jsonObject = JSONArray.fromObject(object);
List<ExpressEmployeeInfoExt2> list2 = (List<ExpressEmployeeInfoExt2>) JSONArray.toCollection(jsonObject, ExpressEmployeeInfoExt2.class);
list2可以直接遍历,不需要处理。
方式三:
Object object = expressList.get("exList");
JSONArray jsonObject = JSONArray.fromObject(object);
List<ExpressEmployeeInfoExt2> list3 = JSONArray.toList(jsonObject);
和方式一一样,需要:
List<ExpressEmployeeInfoExt2> infoExtList = new ArrayList<>();
for (Object expressEmployeeInfoExt : list3) {
JSONObject jsonObject2 = JSONObject.fromObject(expressEmployeeInfoExt);
ExpressEmployeeInfoExt employeeInfoExt = (ExpressEmployeeInfoExt) JSONObject.toBean(jsonObject2,ExpressEmployeeInfoExt.class);
infoExtList.add(employeeInfoExt );
}