SpringBoot中控制层实体类返回参数大小写问题

今天在写程序的时候遇到了一个问题,问题不说太难,但是从问题的发现到解决,着实费了一些时间,今天我在这里写出来,希望我和大家再遇到这样的问题,都很快能解决,只这样的,我有两个程序,一个是用来给另外一个项目发送请求的项目A,另外一个是被调用者B,A接收不到B的响应,经查证,是由于A定义了一个实体类作为接收B中响应的参数,但A中实体类参数实体类为大写,而B中响应的参数解析为了首字母小写,那么我们直接看B中响应的实体类

package com.tp.heartbeat.ajax;

import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.tp.heartbeat.utils.LogUtils;


/**

 *  create by Liujishuai on 2015年9月21日

 */
//@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY,getterVisibility = JsonAutoDetect.Visibility.NONE)
public class AjaxResult {
      /**
     * 请求结果是否成功
     */
    private String Code = "200";

    /**
     * 请求返回信息
     */
    private String Message = "SUCCESS"
    /**
     * 请求结果
     */
    private Object Data = null;


    /**
     * Instantiates a new Ajax result.
     */
    private AjaxResult(){}

 
    public String getCode() {
        return Code;
    }

    public void setCode(String errorCode) {
        Code = errorCode;
    }

    public String getMessage() {
        return Message;
    }

    public void setMessage(String message) {
        Message = message;
    }

    public Object getData() {
        return Data;
    }

    public void setData(Object data) {
        Data = data;
    }

    /**
     * 获取正确结果模板
     *
     * @param message 请求返回信息
     * @param obj 请求结果
     * @return AjaxResult
     */
    public static AjaxResult getOK(String message, Object obj){
        AjaxResult result = new AjaxResult();
        result.setMessage(message);
        result.setData(obj);
        return result;
    }
    

    /**
     * 获取正确结果模板
     *
     * @return AjaxResult
     */
    public static AjaxResult getOK(){
        return getOK(ActionConstants.DEFAULT_SUCCESS_RETURNMSG,null);
    }

}

也就是说,我们本来要求返回的为

{
    "Message": "SUCCESS",
    "Code": "200",
    "Data": null
}

从实体类里面看,B中所给的返回的实体类也并没有出错,参数首字母是大写,但是控制层返回的响应参数确是小写的,也就是说,问题就在于,B中返回的json格式都把本应为大写的首字母变为了小写。我看网上的解决方法是在实体类的参数加上@JsonProperty像下面的这样

  @JsonProperty
    private String Code = "200";

但是我加上之后,返回的响应结果确是大小写的都给返回了,返回如下代码:

{
    "Code": "200",
    "Message": "SUCCESS",
    "Data": null,
    "message": "SUCCESS",
    "data": null,
    "code": "200"
}

那要怎么解决这种情况呢?

解决办法1

只在返回的实体类的get方法上添加@JsonProperty这个注解,例如

@JsonProperty("Code")
    public String getCode() {
        return Code;
    }

这样响应的值就是首字母大写了

解决方法2

我们可以直接在要返回的实体类上加下面注解

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY,getterVisibility = JsonAutoDetect.Visibility.NONE)

这两种解决方法返回的都是首字母大写,都是将实体类的get方法设置为了不能自动识别

你可能感兴趣的:(SpringBoot中控制层实体类返回参数大小写问题)