Spring在API响应中返回java对象时添加额外的键

Posted

技术标签:

【中文标题】Spring在API响应中返回java对象时添加额外的键【英文标题】:Spring adding extra keys when returning java obect in API response 【发布时间】:2021-03-12 16:42:59 【问题描述】:

我遇到了一个问题,即 Spring 向我的响应对象添加了额外的键。我附上了下面的回复(Response-2)。

我也尝试删除 @JsonProperty 但这也不起作用,因为所有键都是小写的。

想要的结果:我希望我的所有键都应该是大写的,因为我已经在 POJO 类中声明了它们。我将通过 Kafka 发送 JSON。

没有@JsonProperty:


    "watchlsttype": null,
    "acctno": null,
    "chg_TYPE": null,
    "status": null,
    "rec_TYPE": null,
    "lstchgtimestamp": null,
    "expirytimestamp": null

API:

@GetMapping(value = "/dummyAPI")
    public Object dummyAPI() throws Exception 
        return new InteracAccountAllowList();
    

响应-2:


    "ACCTNO": null,
    "EXPIRYTIMESTAMP": null,
    "LSTCHGTIMESTAMP": null,
    "WATCHLSTTYPE": null,
    "STATUS": null,
    "CHG_TYPE": null,
    "REC_TYPE": null,
    "lstchgtimestamp": null,
    "expirytimestamp": null,
    "status": null,
    "rec_TYPE": null,
    "watchlsttype": null,
    "chg_TYPE": null,
    "acctno": null

类:

import com.fasterxml.jackson.annotation.JsonProperty;
    
    public class InteracAccountAllowList 
    
        @JsonProperty
        private String ACCTNO;
    
        @JsonProperty
        private String EXPIRYTIMESTAMP;
    
        @JsonProperty
        private String LSTCHGTIMESTAMP;
    
        @JsonProperty
        private String WATCHLSTTYPE;
    
        @JsonProperty
        private String STATUS;
    
        @JsonProperty
        private String CHG_TYPE;
    
        @JsonProperty
        private String REC_TYPE;
    
        public String getACCTNO() 
            return ACCTNO;
        
    
        public void setACCTNO(String aCCTNO) 
            ACCTNO = aCCTNO;
        
    
        public String getEXPIRYTIMESTAMP() 
            return EXPIRYTIMESTAMP;
        
    
        public void setEXPIRYTIMESTAMP(String eXPIRYTIMESTAMP) 
            EXPIRYTIMESTAMP = eXPIRYTIMESTAMP;
        
    
        public String getLSTCHGTIMESTAMP() 
            return LSTCHGTIMESTAMP;
        
    
        public void setLSTCHGTIMESTAMP(String lSTCHGTIMESTAMP) 
            LSTCHGTIMESTAMP = lSTCHGTIMESTAMP;
        
    
        public String getWATCHLSTTYPE() 
            return WATCHLSTTYPE;
        
    
        public void setWATCHLSTTYPE(String wATCHLSTTYPE) 
            WATCHLSTTYPE = wATCHLSTTYPE;
        
    
        public String getSTATUS() 
            return STATUS;
        
    
        public void setSTATUS(String sTATUS) 
            STATUS = sTATUS;
        
    
        public String getCHG_TYPE() 
            return CHG_TYPE;
        
    
        public void setCHG_TYPE(String cHG_TYPE) 
            CHG_TYPE = cHG_TYPE;
        
    
        public String getREC_TYPE() 
            return REC_TYPE;
        
    
        public void setREC_TYPE(String rEC_TYPE) 
            REC_TYPE = rEC_TYPE;
        
    
    

【问题讨论】:

【参考方案1】:

答案很简单:在 setter 方法上使用 @JsonProperty("FIELD_NAME")。

【讨论】:

以上是关于Spring在API响应中返回java对象时添加额外的键的主要内容,如果未能解决你的问题,请参考以下文章

POST / PUT 上的 Java Spring REST API 状态 400 响应

当 HTTP 请求返回状态 401 时,如何在 Java 中解析响应正文

Spring Feign Client 返回空嵌套对象

在 Spring Boot 中使用 Web Client Mono 获取 API 响应错误消息

在 API 响应中使用对象

Spring Boot 从外部 API 返回 JSON 字符串