今天项目对接第三方,需要用json传递数据。拿到接口报文 按格式建好对象后随意写了个测试类。
调起
对面接口返回错误
也没太当回事想着是不是大意了,属性写错了什么的。一个个对字段。再次调起还是错误,由于是远程交流非常不方便,想着是不是参数写的不对。对报文对规则封装方法,再次调起还是错误。心情由还可以变得想杀人,再各种找原因。一步一个debug 就是失败不成功。最后将参数拿出来一个字母一个字母的对比 发现问题
|
||
Fastjson默认采用驼峰命名规则,默认会将首字母改为小写compatibleWithJavaBean默认为false走第二个
首先会得到方法名称,然后截取找出get方法 截取get后第一位转换为小写 +方法后面的属性
像此类坑 还有TKmybatis也会根据驼峰命名规则 将多个大写字母的属性按_组装然后大写变小写。入userName TK映射的时候会根据大小写判定并将大写转为小写这时候映射字段就变为了user_name
Fast内部主要是用递归调用,并且做了大量类型判断以便最终确定属性是那种类型从而做不同的业务
为不免自动采用驼峰将首字母小写 只需要在转json之前设置 compatibleWithJavaBean为true就行了
TypeUtils.compatibleWithJavaBean =true
内部转换bean的代码后续待跟进