【问题记录】【SpringBoot】【Jackson】SpringBoot返回的json结果,某个属性有值结果却没有

1  问题描述

代码如下:
@Data
static class Demo {
  @JsonProperty(index = 1)
  private String menu;
  @JsonProperty(index = 1)
  private String info;
}

@SneakyThrows
public static void main(String[] args) {
  Demo resDto = new Demo();
  resDto.setMenu("222");
  resDto.setInfo("111");
  ObjectMapper objectMapper = new ObjectMapper();
  String str = objectMapper.writeValueAsString(resDto);
  //fastjson转换后的结果
  System.out.println("fastjson=" + JSONObject.toJSONString(resDto));
  //springmvc默认json转换的结果
  System.out.println("objectMapper="+str);
}

SpringMVC默认的序列化是Jackson,字段menu属性有值,但是输出的结果却没有!!!

因为之前另一个项目我记得我就是直接复制上一个字段的信息,改一下字段名就没问题,不知道这个为什么出不来。

2  解决办法

其实就是,@JsonProperty(index = 1)这个属性引起的问题,和Jackson版本的问题导致的,原来的是2.9.0版本,出问题的这个版本是2.12.5;

所以1、要么把属性的Index都设置不一样或者不设置Index即可 2、或者更换Jackson为低版本即可。

3  Jackson版本源码

主要是看POJOPropertiesCollector这个类的collectAll()方法,该方法会收集类的属性信息集合。

 

 

posted @ 2023-01-03 22:03  酷酷-  阅读(296)  评论(0编辑  收藏  举报