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

如何让Wrapper API B返回createdOn而非created_on以适配目标端C?

字段命名映射问题解决方案

核心问题分析

需要让包装器API B同时适配两个场景:接收数据源A返回的蛇形命名字段created_on,以及向目标端C输出驼峰命名的createdOn。之前@JsonProperty未生效,大概率是注解使用方式错误或配置冲突导致。

具体解决办法

1. 精准控制单字段(Jackson注解方案)

调整B类的字段注解,同时指定反序列化的别名(适配A的输入)和序列化的输出名称(适配C的需求):

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;

class B {
    Long id;
    
    // 反序列化时接收A的"created_on",序列化时输出为"createdOn"
    @JsonAlias("created_on")
    @JsonProperty("createdOn")
    String created_on;
}

如果不想保留created_on字段名,也可以直接将字段改为createdOn,仅用@JsonAlias适配A的输入:

class B {
    Long id;
    
    @JsonAlias("created_on")
    String createdOn;
}

注意:必须导入Jackson官方注解包com.fasterxml.jackson.annotation,避免误导入Gson等其他框架的同名注解。

2. 全局配置批量适配(Spring Boot场景)

如果B类中有大量蛇形转驼峰的字段,可通过全局配置一次性解决,在application.properties中添加:

# 反序列化自动将蛇形命名转为驼峰(适配A的输入)
spring.jackson.deserialization.property-naming-strategy=SNAKE_CASE
# 序列化自动输出标准驼峰命名(适配C的需求)
spring.jackson.serialization.property-naming-strategy=LOWER_CAMEL_CASE

配置后,B类无需额外加注解,即可自动完成created_on与createdOn的双向映射。

3. 排查配置冲突

若全局配置过统一命名策略(如spring.jackson.property-naming-strategy=SNAKE_CASE),会强制序列化输出蛇形字段,此时需确保字段注解优先级高于全局配置,或调整为上述分场景的序列化/反序列化策略。

验证方式

修改后测试B的输出:调用B时应返回{"id":1,"createdOn":"27July"},此时C的POJO就能正确识别createdOn字段并获取对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:17:45