BUG实录 | 第一篇:FastJSON转换Oracle字段成实体后首字母小写问题
问题描述
因为项目连接的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时的一个注意事项,记录一下。
本文作者:有来技术
本文链接:https://www.cnblogs.com/haoxianrui/p/12853343.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步