SpringMvc接收参数问题

1.入参接口定义如下:

{
"type": "All",// "All":自动全部分配,"":自动分配list
"list": [{
"id": "UQzDue9QkYOgF8Ev",//基金公司id
"route": "bvtest01",// 通道
"symbol": "002739.SZ"// 股票代码
}]
}

 

2.前端传递的list参数应该是标准的Json类型参数,下面是浏览器url自测的传参演示:

http://localhost:8080/xxxx/xxxxxxxxxx.json?type=&list=%5b%7b%22id%22%3a%22UQzDue9QkYOgF8Ev%22%2c%22route%22%3a%22bvtest01%22%2c%22symbol%22%3a%22002739.SZ%22%7d%5d

 

其中list=后面的部分为(通过url转码:http://tool.chinaz.com/tools/urlencode.aspx  后的地址栏编码):

[{"id":"UQzDue9QkYOgF8Ev","route":"bvtest01","symbol":"002739.SZ"}]

 

3.后端如何接收这个list,并转成我们需要的List<Map<String, String>>格式数据。

 

public Object xxxxxock(HttpServletRequest request, HttpServletResponse response,
                                     @RequestParam String type,
                                     @RequestParam( required = false) String list) {
    Map<String, Object> resultMap = new HashMap<>();
    List<Map<String, String>> formList = JSON.parseObject(list, List.class);//将String转换格式

    if (!"All".equals(type) && formList.size() != 0) {  
        for (Map<String, String> map :
                formList) {
            String symbol = map.get("symbol");
            String route = map.get("route");
            String groupId = map.get("id");
            }
        }

 

解决的过程:

后台接收参数时报错,

The valid characters are defined in RFC 7230 and RFC 3986 错误

于是贴百度,发现

大概原因是:

在tomcat 8.0.35之后 ,tomcat对url的参数做了比较规范的限制,必须按照RFC 7230 and RFC 3986规范,对于非保留字字符,如果不做转义处理,一律都会报The valid characters are defined in RFC 7230 and RFC 3986 错误。

解决这个问题的办法有几个:

  1. 把非保留字字符做转义
  2. 就是使用保留字字符
  3. 将json数据进行urlencode编码就可以了 即把json中的{}编码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值