1 一中简单的方式是用 key value 的方式 ,List<T> 转换为jsonstring ,并且为该jsonString 指定key,然后获取key在手动解析json,略!
2 直接传递json
参数 为
[ { "id":0, "loandlat":"", "missionEara":"", "uavNm":"0", "endTime":"", "takeOffTime":"" }, { "id":0, "loandlat":"", "missionEara":"", "uavNm":"1", "endTime":"", "takeOffTime":"" } ]
设置 Content-Type 为 application/json;charset=utf-8
服务端的解析为
@SuppressWarnings({ "rawtypes", "unchecked" }) @RequestMapping(value="/jsonapi/addUavMission",produces="application/json;charset=utf-8",consumes="application/json;charset=utf-8") @ResponseBody public Result UavMissionTj(@RequestBody String param){ Result<UavMissionTj> result=new Result<>(); try { Gson gson = new Gson(); Type type = new TypeToken<ArrayList<UavMissionTj>>() { }.getType(); List<UavMissionTj> uavMissionTj = gson.fromJson(param, type); result = service.addUavMissionTj(uavMissionTj); } catch (Exception e) { // TODO Auto-generated catch block result.setState(Constant.HTTP_STATUS_FAIL); getLogger().info("----->>"+e.getLocalizedMessage()); } return result; }
@RequestBody 这样param 就是你刚才的那一串jsonstring
3 为什么不直接绑定到List<T> 中 我个人是没有成功的
@Controller @RequestMapping("/test") public class TestController { @RequestMapping("/api/getTest") @ResponseBody public Object getTest(List<UavMissionTj> param ){ System.out.println(param.size()); for (int i = 0; i < param.size(); i++) { System.out.println(param.get(i).getUavNm()); } return param; } }
这里的List<UavMisstionTj> 里面是一个hashmap,很奇怪是吧
英文 你在gson 转换 jsonstring 的是时候是不知道要支持那个返型 那时候你是不知道jsonstring 的字段是对应 UavMisstionTj 的属性的。
比如
Gson gson = new Gson(); Type type = new TypeToken<ArrayList>() { }.getType(); List<UavMissionTj> uavMissionTj = gson.fromJson(jsonArray.toString(), type);
你是解析失败的。如果有好的方法可以评论一下,一起学习