springmvc 复杂参数LIst<T> JSON参数绑定

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);

你是解析失败的。如果有好的方法可以评论一下,一起学习

 

转载于:https://www.cnblogs.com/seanzhoutao/p/5653929.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值