FastJson 設定預設引數

2021-10-11 18:53:30 字數 3562 閱讀 2613

在實際專案中,往往使用json傳遞引數,若物件屬性為null,轉json字串會預設去掉該屬性,服務端強校驗會出錯。

com.alibaba

fastjson

1.2.7

public

class

user

implements

serializable

public

void

setname

(string name)

public string getaddress()

public

void

setaddress

(string address)

@override

public string tostring()

}

public

static

void

main

(string[

] args)

";// json.default_generate_feature |= serializerfeature.writemapnullvalue.getmask();

// user user = json.parseobject(data, user.class);

user user =

newuser()

; user.

setname

("***");

system.out.

println

(user)

; string s = json.

tojsonstring

(user)

; system.out.

println

(s);

}

結果如下:缺少了address屬性

傳入引數 serializerfeature.writemapnullvalue

public

static

void

main

(string[

] args)

";// json.default_generate_feature |= serializerfeature.writemapnullvalue.getmask();

// user user = json.parseobject(data, user.class);

user user =

newuser()

; user.

setname

("***");

system.out.

println

(user)

; string s = json.

tojsonstring

(user,serializerfeature.writemapnullvalue)

; system.out.

println

(s);

}

結果如下: address屬性為空也轉成json字串

注意:

這種方式也要在所有轉json的地方都要傳入這個引數,需要改動量大,我們可以考慮設定乙個全域性的變數:

public

static

void

main

(string[

] args)

總結:

fastjson全域性配置說明

serializerfeature.prettyformat:格式化輸出

serializerfeature.writemapnullvalue:是否輸出值為null的字段,預設為false

serializerfeature.disablecircularreferencedetect:消除迴圈引用

serializerfeature.writenullstringasempty:將為null的字段值顯示為""

writenulllistasempty:list欄位如果為null,輸出為,而非null

writenullnumberaszero:數值字段如果為null,輸出為0,而非null

writenullbooleanasfalse:boolean欄位如果為null,輸出為false,而非null

skiptransientfield:如果是true,類中的get方法對應的field是transient,序列化時將會被忽略。預設為true

sortfield:按欄位名稱排序後輸出。預設為false

writedateusedateformat:全域性修改日期格式,預設為false。json.deffault_date_format = 「yyyy-mm-dd」;json.tojsonstring(obj, serializerfeature.writedateusedateformat);

beantoarray:將物件轉為array輸出

quotefieldnames:輸出key時是否使用雙引號,預設為true

usesinglequotes:輸出key時使用單引號而不是雙引號,預設為false(經測試,這裡的key是指所有的輸出結果,而非key/value的key,而是key,和value都使用單引號或雙引號輸出)、

想要全域性配置的話,請在main方法體中設定:

暫時沒有找到xml方式,切記切記,全域性配置慎用!/(ㄒoㄒ)/~~

//先執行static**塊,再執行該方法

//是否輸出值為null的字段,預設為false

json.default_generate_feature |= serializerfeature.writemapnullvalue.

getmask()

;//數值字段如果為null,輸出為0,而非null

json.default_generate_feature |= serializerfeature.writenullnumberaszero.

getmask()

;//list欄位如果為null,輸出為,而非null

json.default_generate_feature |= serializerfeature.writenulllistasempty.

getmask()

;//字元型別字段如果為null,輸出為 "",而非null

json.default_generate_feature |= serializerfeature.writenullstringasempty.

getmask

()

Python函式預設引數設定

我們知道,在呼叫函式時,如果不指定某個引數,直譯器會丟擲異常。為了解決這個問題,python 允許為引數設定預設值,即在定義函式時,直接給形式引數指定乙個預設值,這樣的話,即便呼叫函式時沒有給擁有預設值的形參傳遞引數,該引數可以直接使用定義函式時設定的預設值。定義帶有預設值引數的函式,其語法格式如下...

es6函式預設引數與手動設定預設引數的區別

函式預設引數 之前我們不能直接為函式指定預設引數,因此很多時候為了保證傳入的引數具備乙個預設值,我們常常使用如下的方法 function add x,y console.log add 50這種方式並不是沒有缺點,比如當我傳入乙個x值為false 或運算子判斷為假的時候 這個時候任然會取到預設值,就...

python 預設引數 Python預設引數有坑?

最近有小夥伴在面試中遇到了 關於函式預設引數的坑 的題目,少數夥伴對此問題理得不是太清楚,今天匯智妹請到匯智動力高階教師鄧老師為大家詳細講解一下,幫助不太清楚的小夥伴清晰的梳理一遍。鄧老師本次主要從以下三點來講解 什麼是預設引數?函式預設引數的坑是什麼?函式預設引數為什麼會有坑?一 什麼是預設引數 ...