首页 > 其他分享 >【问题记录】【SpringBoot】【Jackson】SpringBoot返回的json结果,某个属性有值结果却没有

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

时间:2023-01-03 22:11:07浏览次数:53  
标签:JsonProperty SpringBoot Jackson String resDto 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()方法,该方法会收集类的属性信息集合。

 

 

标签:JsonProperty,SpringBoot,Jackson,String,resDto,json,属性
From: https://www.cnblogs.com/kukuxjx/p/17023508.html

相关文章