请求报文首字母大写问题解决方案

在和对方系统进行对接的时候,发现一个问题,对方给的请求报文和返回报文中的字段都是首字母大写的,那么再通过feign调用的时候,你传给对方的请求入参也应该和报文保持一致,示例如下:

{
  "Name":"zhangsan",
  "Age":"12",
  "Address":"上海市天潼路wework"
}		

下面是我们定义的DTO:

package com.learn.java.eight;

import lombok.Data;

@Data
public class PersonInfoRequestDTO {

    /**
     * 姓名
     */
    private String Name;

    /**
     * 年龄
     */
    private String Age;

    /**
     * 居住地址
     */
    private String Address;
    
}

可以从我们定义的DTO看出来,我们采用了lombok注解@Data,下面是我们的测试类:

package com.learn.java.eight;

import com.alibaba.fastjson.JSON;

public class Test {
    public static void main(String[] args) throws Exception {
        PersonInfoRequestDTO personInfo = new PersonInfoRequestDTO();
        personInfo.setName("zhangsan");
        personInfo.setAge("12");
        personInfo.setAddress("上海市天潼路wework");
        System.out.println(JSON.toJSONString(personInfo));
    }
}

我们的测试类只是将DTO赋值,并打印成json String,打印结果如下:

{"address":"上海市天潼路wework","age":"12","name":"zhangsan"}

我们可以发现,打印出来的json报文与我们预期的不符合,那么应该如何处理?

下面是解决方案:

package com.learn.java.eight;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * @author lee
 * @email [email protected]
 * @date 2020/4/18
 *
 **/
@Data
public class PersonInfoRequestDTO {

    /**
     * 姓名
     */
    @JSONField(name = "Name")
    @JsonProperty(value = "Name")
    private String name;

    /**
     * 年龄
     */
    @JSONField(name = "Age")
    @JsonProperty(value = "Age")
    private String age;

    /**
     * 居住地址
     */
    @JSONField(name = "Address")
    @JsonProperty(value = "Address")
    private String address;

}

下面是继续运行上面的测试类,下面是运行结果:

{"Address":"上海市天潼路wework","Age":"12","Name":"zhangsan"}

请求报文首字母大写问题解决方案_第1张图片

你可能感兴趣的:(JAVA)