zoukankan      html  css  js  c++  java
  • 小BUG大原理:FastJSON实体转换首字母小写的尴尬事件

    问题描述

    因为项目连接的Oracle数据库,字段名映射方便使用大写,但是通过接口调用返回到前端的字段名首字母为小写,这样带来的问题前端显示的字段就需要写这种很尴尬的格式。

    原因分析

    开发环境使用的是SpringBoot 2.x+FastJSON 1.2.68,因为是数据格式的问题,便想到可能后台数据转换的问题,而项目使用FastJSON作为序列化转换工具。

    关键代码在FastJSON包下的TypeUtils工具类中,根据方法名methodName得到属性名propertyName时出的问题。

    举个栗子正常的getScore得到score没问题,但是getSCORE呢,得到是sCORE让人尴尬的属性名。

    从上面代码判断上问题在于compatibleWithJavaBean这个变量,默认值是false,如果不想得到尴尬的属性名,设置compatibleWithJavaBean的值为true即可

    解决方案

    随便在Service或者Controller设置TypeUtils的compatibleWithJavaBean类变量为true

    @Controller
    public class IndexController{
        static {
            TypeUtils.compatibleWithJavaBean = true;
        }
        @Autowired
        private IHmsFrLogService iHmsFrLogService;
        // 此处省略很多行代码
    }
    

    问题总结

    当实体对象的字段名全是大写的情况下使用FastJSON作为messageConvert时的一个注意事项,记录一下。

  • 相关阅读:
    HDU 1950 Bridging signals
    HDU 1025 (LIS+二分) Constructing Roads In JGShining's Kingdom
    HDU 1160 FatMouse's Speed
    HDU 1257 最少拦截系统
    HDU 1574 RP问题
    解同余式ax ≡ c(mod m)
    拓展欧几里得算法及代码实现
    百练 1088 滑雪
    [再做01背包] POJ 3624 Charm Bracelet
    百练 2755 神奇的口袋
  • 原文地址:https://www.cnblogs.com/fly4j/p/12853343.html
Copyright © 2011-2022 走看看