記一次jackson序列化Boolean的坑

2021-09-23 22:41:54 字數 644 閱讀 6048

@data

public

class

coupontemplatedto

private boolean getend()

}

我定義了乙個這樣的類,我們專案用的是spring boot,預設底層採用的是jackson序列化,但是在使用**了乙個問題private boolean startprivate boolean end這兩個字段一直無法序列化

總結排查思路如下:

是boolean還是boolean,到底是基本資料型別還是包裝類,如果是基本資料型別的話(包裝類可以使用,但是不推薦),不要使用is開頭。我們可以看看阿里巴巴規範中的這段話

【強制】pojo類中的任何布林型別的變數,都不要加 is,否則部分框架解析會引起序列化錯誤。

反例:定義為基本資料型別 boolean issuccess;的屬性,它的方法也是 issuccess(),rpc框架在反向解析的時候,「以為」對應的屬性名稱是 success,導致屬性獲取不到,進而丟擲異常。

這個錯誤也是我犯的錯誤,我複寫了get方法,方法的訪問許可權被設定成了private級別

解決方案:

jackson反序列化物件

jackson解析json字串是區分大小寫的,如果對應的字段首字母為大寫或者不好設定對應的型別,寫出的get方法是獲取不到json值的,那麼這時候就需要新增 jsonproperty name 註解來標註反序列化的是哪個字段。如果反序列化的物件中包含物件或者集合,比如說map,list等,這時候就需...

jackson 列舉 序列化和反序列

網上這類資料很少,自己總結一下 data allargsconstructor public static enum eventjackson的列舉序列化 預設序列化為enum的name event.get password序列化為 get password 反序列化也一樣,只有string為 ge...

jackson 序列化成扁平化

序列化之後,json的層級就只有一層.做個必須 類似於複製資料夾,扁平化之後,就只複製檔案,在目標地方不在建立子資料夾.原json 扁平化json 其中的prefix suffix 還可以指定生成的key的字首和字尾.用處多為轉實體類為出參.官方注釋 public class parent publ...