小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時的一個注意事項,記錄一下。

posted @ 2020-05-08 22:03  你好,舊時光  閱讀(...)  評論(...編輯  收藏
全民捕鱼游戏怎么玩 牛8 六肖期期中免费公开 陕西体彩十一选五技巧 北京快中彩指标统计 股票融资融券是好是坏 排列3和值走势图500期 河南十一选五开奖公告 广西快三网络购彩 一特中马今晚开什么码 内蒙古快三遗漏二码