【问题记录】【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 @   酷酷-  阅读(348)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示