Fork me on GitHub

Jackson序列化大小写问题

常见方案

1.ACCEPT_CASE_INSENSITIVE_PROPERTIES: true
2.property-naming-strategy: SNAKE_CASE
3.@JsonProperty 注解

例如

@Getter
@Setter
public class Student {
    private Integer id;
    private String stuName;
    private String email;
}

前端数据:

{
  "id": 1,
  "stuName": "秋先生",
  "email": "qiu@example.com"
}

ACCEPT_CASE_INSENSITIVE_PROPERTIES: true

application.yml配置

spring:
  jackson:
    mapper:
      ACCEPT_CASE_INSENSITIVE_PROPERTIES: true
  1. 对字段名大小写不敏感
  2. stuName、STUNAME、stuname、StuNaMe 都可以匹配
  3. 不解决下划线与驼峰命名不一致问题
    前端数据
{
  "id": 1,
  "STUNAME": "秋先生",
  "EMAIL": "qiu@example.com"
}

property-naming-strategy: SNAKE_CASE

application.yml配置

spring:
  jackson:
    property-naming-strategy: SNAKE_CASE
  1. • 解决 驼峰 <-> 下划线 自动映射
  2. • stuName ↔ stu_name
  3. • 对大小写敏感(除非再配合 ACCEPT_CASE_INSENSITIVE_PROPERTIES)
    如:
{
  "id": 1,
  "stu_name": "秋先生",
  "email": "qiu@example.com"
}

后端字段是 stuName → 自动映射成功 ✅
但如果前端传 STU_NAME → 接收不到 ❌,除非再开 ACCEPT_CASE_INSENSITIVE_PROPERTIES: true。

@JsonProperty

@Getter
@Setter
public class Student {

    private Integer id;

    @JsonProperty("stu_name")
    private String stuName;

    @JsonProperty("EMAIL")
    private String email;
}
  1. • 完全按注解指定的字段名来匹配
  2. • 灵活但冗余,字段多时会很麻烦
  3. • 不依赖全局配置
{
  "id": 1,
  "stu_name": "秋先生",
  "EMAIL": "qiu@example.com"
}
posted @ 2025-08-28 11:19  秋夜雨巷  阅读(39)  评论(0)    收藏  举报