You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FeignClient中GetMapping传JSON数组参数被错误拆分如何解决

问题根因

直接将查询参数硬拼接在@GetMapping的value属性中时,Feign的路径解析逻辑会将查询串里的逗号识别为多值参数的分隔符,自动把原本完整的fields参数值拆分为两段,最终生成两个同名的fields查询参数,就是你调试看到的错误地址格式,自然无法满足外部接口的JSON格式要求。

可行解决方案

不要把查询参数硬写在映射路径里,使用Feign标准的参数绑定方式即可,根据你的使用场景选下面任意一种写法:

  • 固定传值场景:如果fields的取值是固定的,直接通过@RequestParam的defaultValue设置参数值,Feign会自动对整个参数值做正确的URL编码,不会拆分逗号
@GetMapping("/path/to/endpoint")
public String hitEndpoint(
        @RequestParam(value = "fields", defaultValue = "[\"nm\",\"label\"]") String fields
) {}
  • 动态传值场景:如果fields的取值需要动态调整,显式声明请求参数,调用方法时传入符合JSON格式的字符串即可
@GetMapping("/path/to/endpoint")
public String hitEndpoint(@RequestParam("fields") String fields) {}

// 业务代码中调用示例
String result = hitEndpoint("[\"nm\",\"label\"]");

避坑提示:不要尝试在路径里手动把逗号转义为%2C,多数版本的Feign会对路径中的内容做二次URL编码,最终转成%252C,反而引发新的参数格式错误。

内容的提问来源于stack exchange,提问作者bkqdad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 22:18:42