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

使用FasterXML将对象转为指定大小写JSON对接REST转SOAP服务问题

解决JSON序列化键名大小写不匹配的问题

这问题我太熟了!你现在遇到的核心问题是:Java JSON序列化库默认会遵循JavaBean规范,把类名、字段名转成小驼峰格式,但你的目标REST服务要求首字母大写的键名(比如Group而不是group,InSSN而不是inSSN)。下面给你几个直接能用的解决办法:

方案1:用Jackson的@JsonProperty注解(最常用)

如果你的项目用的是Jackson作为JSON序列化工具,直接给类属性和字段加注解指定序列化后的名称就行:

修改Group类

public class Group {
    @JsonProperty("InSSN") // 指定序列化后的字段名为InSSN
    protected String InSSN = null;

    // 保留原有的getter和setter
    public String getInSSN() {
        return InSSN;
    }

    public void setInSSN(String inSSN) {
        InSSN = inSSN;
    }
}

修改MappingSSNValidation类

假设这个类里有个Group类型的属性(比如叫group),给它加注解指定序列化后的键名为Group:

public class MappingSSNValidation {
    @JsonProperty("Group") // 指定序列化后的属性名为Group
    private Group group;

    // 保留原有的getter和setter
    public Group getGroup() {
        return group;
    }

    public void setGroup(Group group) {
        this.group = group;
    }
}

这样序列化后就能得到你需要的格式:

{"mappingSSNValidation":{"Group":{"InSSN":"123456789"}}}

方案2:用Gson的@SerializedName注解

如果你的项目用的是Gson,就用它的专属注解来指定名称:

修改Group类

public class Group {
    @SerializedName("InSSN")
    protected String InSSN = null;

    // 原有的getter和setter不变
}

修改MappingSSNValidation类

public class MappingSSNValidation {
    @SerializedName("Group")
    private Group group;

    // 原有的getter和setter不变
}

为什么会出现这个问题?

Java的JSON序列化库(Jackson、Gson等)默认会把JavaBean的属性名转成小驼峰格式:比如类名Group会变成group,字段InSSN会变成inSSN。但你的目标服务要求严格匹配给定的大小写格式,所以必须手动指定每个需要特殊处理的键名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:30:05