dubbo布尔值序列化问题
今天遇到一个问题,dubbo接口里的某个response的bool字段,字段名里含有is,序列化后的值里is居然自动消失了。
这里随便举个例子:
public class User implements Serializable{
private boolean isPayed;
}
调用该dubbo接口之后,序列化出来的User中,本来的isPayed
变成了 payed
。
因为dubbo用的是Gson解析,所以尝试加上注解 @SerializedName("isPayed")
,但是结果没变化。
后来发现,字段名貌似是从get、set方法名获取的,而这里默认生成的getter方法是 isPayed
,setter是setPayed
,而不是 getIsPayed
或 setIsPayed
。
解决方式
-
去掉is
阿里巴巴编程规范要求bool命名不要用is,因为可能会在某些场景出问题。之所以这么做也是有迹可循的,也有很多博客展示了不同序列化工具(如jackson、fastjson)对于bool字段序列化方式的不同 -
修改get、set方法
分别修改为:getIsPayed
、setIsPayed
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/19349.html