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

如何在请求体(Request Body)中接收小驼峰式(lowerCamelCase)参数?

如何让Spring接收小驼峰格式的请求体参数?

嗨,我来帮你捋清楚这个问题!首先得明确一点:Jackson(Spring默认的JSON序列化/反序列化工具)默认就支持小驼峰(lowerCamelCase)的参数映射——因为你的Student实体类字段本身就是小驼峰命名(比如firstName),正常情况下不用额外配置就能匹配请求体里的同名小驼峰字段。

你之前用了@JsonNaming(PropertyNamingStrategy.LowerCaseStrategy.class),这个注解会强制把所有字段映射成纯小写格式(比如请求体里的firstname),所以才会导致小驼峰参数无法被正确接收。下面给你几种实用的解决思路:

方法1:移除LowerCaseStrategy,恢复默认行为

如果这个@JsonNaming注解是加在Student类上的,直接删掉它就行。恢复默认后,Jackson会自动按照实体类的小驼峰字段名匹配请求体参数:

class Student{
 String firstName; // 自动匹配请求体里的"firstName"
 String lastName;  // 自动匹配请求体里的"lastName"
 int rollNumber;   // 自动匹配请求体里的"rollNumber"
}

这时你传请求体{"firstName":"John","lastName":"Doe","rollNumber":123},就能正常映射到Student对象里了。

方法2:显式指定小驼峰命名策略(保留@JsonNaming注解)

如果你还是想通过@JsonNaming统一配置命名规则,可以指定小驼峰对应的策略,注意Jackson版本的差异:

  • 对于Jackson 2.12及以上版本(推荐),用新的PropertyNamingStrategies枚举:
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategies.LOWER_CAMEL_CASE)
class Student{
 String firstName;
 String lastName;
 int rollNumber;
}
  • 如果是旧版本Jackson,用旧的PropertyNamingStrategy:
import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

@JsonNaming(PropertyNamingStrategy.LowerCamelCaseStrategy.class)
class Student{
 String firstName;
 String lastName;
 int rollNumber;
}

方法3:单个字段自定义映射(灵活处理特殊场景)

如果只是部分字段需要小驼峰,其他字段要保留原有规则,可以用@JsonProperty注解单独指定每个字段对应的请求体参数名:

class Student{
 @JsonProperty("firstName") // 显式匹配请求体里的"firstName"
 String firstName;
 
 @JsonProperty("lastName")
 String lastName;
 
 int rollNumber;
}

这种方式适合混合多种命名格式的复杂场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:08:10