Spring Boot中Json串解析属性首字母为大写的解决方案

最近项目中用到了spring boot框架,在接口返回的json串中有一些字段首字母是大写的,然而首字母大写的属性解析为null。

通过追踪源码我们发现,他序列化json的时候,是使用的jackson的。返回用@responsebody自动处理json,Jackson在解析返回的json字符串时始首字母是默认小写。
json转换具体转换过程源代码请看这篇博文

解决:用jackson支持的改字段名称方法

通过@JsonProperty注解来解决比较方便,作用是把该属性的名称序列化(或者反序列化接收参数)为另外一个名称,如把trueName属性序列化为name,@JsonProperty(value="name")

如下:

public class WifiCO2 {
    @JsonProperty("ID")
    private Long ID;
    private String IP;
    private String Name;
    private Integer temp;
    private Integer settemp;
    private String faID;

经过测试可以解决问题。

通过网络搜索查找到另一种方式:

  • Fastjson方式(Fastjson定制属性的序列化和反序列化):

引用处:

https://github.com/alibaba/fastjson/wiki/JSONField

通过注解的方式来指定序列化和反序列化

//配置在get,set方法上
public class A {
      private int id;
 
      @JSONField(name="ID")
      public int getId() {return id;}
      @JSONField(name="ID")
      public void setId(int value) {this.id = id;}
 }
 
 
//配置在field上
public class A {
      @JSONField(name="ID")
      private int id;
 
      public int getId() {return id;}
      public void setId(int value) {this.id = id;}
 }
 
// 使用format配置日期格式化
 public class A {
      // 配置date序列化和反序列使用yyyyMMdd日期格式
      @JSONField(format="yyyyMMdd")
      public Date date;
 }
 

你可能感兴趣的:(Spring Boot中Json串解析属性首字母为大写的解决方案)