首页 > 解决方案 > FormUrlEncoded POST 请求,我需要使用 SpringBoot 和 Jackson 将蛇案例值转换为 camelCase

问题描述

我正在与第三方的供应商 API 集成。

我有一个 SpringBoot 和 Jackson 设置

他们正在向我发送一个 POST 请求,该请求的类型为 formUrlEncoded,参数在 snake_case 中(总共超过 10 个参数,没有正文)

例如


POST www.example.com?player_id=somePlayerId&product_id=someProductId&total_amount=totalAmount...

JSON 有许多开箱即用的助手,但我找不到任何用于 formUrlEncoded 的助手(我希望我遗漏了一些明显的东西)。

我试过@ModelAttribute@RequestParam但没有运气。

我试图避免@RequestParam MultiValueMap<String, String> params+ 自定义映射器选项

标签: spring-bootspring-mvcx-www-form-urlencoded

解决方案


我不认为你缺少任何东西。查看RequestParamMethodArgumentResolver#resolveName 源,我看不到自定义请求参数匹配方式的方法。所以看起来你要么必须实现自己的解析器,要么只用注释每个参数@RequestParam并提供名称,例如@RequestParam("product_id") String productId

编辑:

至于ModelAttributeModelAttributeMethodProcessor使用WebDataBinder。同样,您可以使用自定义自定义它,DataBinder但我没有发现任何开箱即用的支持别名,如 Jackson 所做的那样。


推荐阅读