今天遇到乙個問題,dubbo介面裡的某個response的bool欄位,欄位名裡含有is,序列化後的值裡is居然自動消失了。
這裡隨便舉個例子:
public
class
user
implements
serializable
呼叫該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
Android本地化布林值
今天在做本地化android的時候遇到乙個問題就是不知道怎麼本地化布林值。想了個解決辦法如下 我們可以為true和false建立字串資源 英語字串資源 name boolean true true string name boolean false false string 中文字串資源 name ...
dubbo的序列化問題
當兩個系統之間存在引數傳遞的時候,如果傳遞的引數是個物件,它必須實現序列化,而且如果這個物件的屬性還是乙個物件的話,那麼相應的另外乙個物件也是需要序列化。例子 呼叫系統在呼叫快取服務的時候,通過工廠方法傳遞乙個redisservice,這無意間就形成了引數傳遞,不僅redisservice需要實現序...
Dubbo和FastJson反序列化漏洞
dubbo 近日 dubbo 官方報告了乙個 dubbo 遠端 執行問題 cve 2020 1948 該問題由 provider 反序列化漏洞引起。根據介紹,攻擊者可以使用無法識別的服務名稱或方法名稱,並帶上一些惡意引數有效載荷傳送 rpc 請求。當惡意引數反序列化後,將執行一些惡意 受影響的版本 ...