• Jackson和fastjson解决序列化时字段属性大小写改变的问题


    在部分特殊场景下,我们可能会把实体的字段属性改成全部大写,但是在返回前端时,字段会被序列化小写
    比如我们有一个这个类属性都是大写:
    在这里插入图片描述

    后端接口是这样的
    在这里插入图片描述
    然后我们请求后,会发现我们的字段被变成全部小写的。
    在这里插入图片描述
    这个就可能会导致前端字段和后端字段大小写不一致的问题。
    因此为了规避这个问题我们可以改变序列化规则。
    spring默认使用的是jackson,我们就先说jackson 的解决方法。

    Jackson

    方法一,我们可以使用@JsonProperty

    在这里插入图片描述
    在这里插入图片描述
    方法二:

    我们可以重写jackson消息转换器中的序列化策略

    package com.hosptial.config;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
    
    @Configuration
    public class JsonConfig {
    
        @Bean
        public HttpMessageConverters jacksonHttpMessageConverters() {
            // 创建Jackson消息转换器
            MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    
            // 创建Jackson配置对象
            ObjectMapper objectMapper = new ObjectMapper();
    
            // 设置序列化规则
    //        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            objectMapper.setPropertyNamingStrategy(new CustomPropertyStrategy());
            // 设置Jackson配置
            converter.setObjectMapper(objectMapper);
    
            // 返回HttpMessageConverters对象
            return new HttpMessageConverters(converter);
        }
    }
    
    
    package com.hosptial.config;
    
    import com.fasterxml.jackson.databind.PropertyNamingStrategy;
    
    import java.util.Locale;
    
    public class CustomPropertyStrategy extends PropertyNamingStrategy.PropertyNamingStrategyBase {
    
        public String translate(String input) {
            return input.toUpperCase(Locale.ROOT);
        }
    }
    
    
  • 相关阅读:
    【云原生】Docker容器服务更新与发现之consul
    ARM pwn 入门 (1)
    【深度学习实验】前馈神经网络(四):自定义逻辑回归模型:前向传播、反向传播算法
    元宇宙直播:“概念期”的暴利生意,风口下的炒作游戏
    centos通过docker安装rabbitMq和延迟队列说明
    文件描述符
    初入Vue(一)
    MyBatis 入门
    这些Java面试题,有点虐人!
    sed与awk
  • 原文地址:https://blog.csdn.net/qq_16733389/article/details/134048279