@GET接口参数解码失败求助:已开启encoded=true仍异常
GET接口JSON参数解码失败的解决方案
检查客户端编码逻辑
设置encoded=true后,客户端会自动对参数值做URL编码,导致JSON里的双引号被转成%22。如果之前手动把双引号换成了",等于做了两次转义,后端自然解不出来。
解决办法:直接传入原始JSON字符串[{"field":"user_id","value":"633a71e6644de2ad5123c57b"}],不要手动转义双引号,让客户端统一处理编码。如果用的是请求库(比如Axios、OkHttp),检查库的配置,避免重复编码。后端做解码适配
如果客户端没法修改,后端可以先对filters参数做一次URL解码,再解析JSON。比如:- Java:
String decodedFilters = URLDecoder.decode(filters, "UTF-8");再把decodedFilters反序列化为对象 - Python:
decoded_filters = urllib.parse.unquote(filters)之后解析JSON
或者调整参数接收方式,先接收原始字符串,解码后再处理。
- Java:
换用POST请求传递复杂参数
GET请求的URL有长度限制,而且复杂JSON参数的编码容易出问题。换成POST请求,把JSON参数放在请求体里,既不用纠结URL编码,也更符合REST接口的设计规范。
内容的提问来源于stack exchange,提问作者VIKAS SOLANKI
相关产品推荐
相关产品推荐

