Jackson自定義序列化null值處理

2021-10-19 01:46:12 字數 1655 閱讀 5635

1.1 處理的原因

在對list型別的值進行處理時,有一部分服務是有做一些邏輯判斷的,在邏輯判斷不通過的時候會返回乙個null值,而json格式的預設空值的時候為,即同樣是list型別,乙個是null,乙個""。

最簡單的辦法是在null值的地方全部例項化乙個new arraylist<?>(0);但是這樣會修改很多地方,而且對於這些情況都要進行例項化分配記憶體不是那麼的理想。

所以就在springmvc轉json的地方做手腳。

我們都知道springmvc是使用jackson做的json序列化工具。

1.2 配置類

@configuration

public

class

myjsonconfig

}

1.3 處理對應型別為null的類
/**

* 處理陣列、list、array、set型別的null值

* * @version 1.0

*/public

class

mynullarrayjsonserializer

extends

jsonserializer

}}

/**

* 處理字串等型別的null值

* * @version 1.0

*/public

class

mynulljsonserializer

extends

jsonserializer

}

/**

* 處理integer、long為null

* * @version 1.0

* @date 2021/1/29/029 16:58

*/public

class

mynullnumberjsonserializer

extends

jsonserializer

}

1.4 自定義的modifier

主要做的事情為:當序列化型別為array,list、set時,當值為空時,序列化成,判斷型別

控制將null值處理成空集合還是空字串

public

class

mybeanserializermodifier

extends

beanserializermodifier

elseif(

isnumbertype

(writer)

)else

}return beanproperties;

}/**

* 判斷是陣列型別

** @param writer

* @return

*/protected

boolean

isarraytype

(beanpropertywriter writer)

/** * 判斷是陣列型別

** @param writer

* @return

*/protected

boolean

isnumbertype

(beanpropertywriter writer)

}

自定義註解實現jackson序列化和反序列化

jackson序列化需要在自定義註解上面加上 jsonserialize using imageurlserialize.class imageurlserialize是自定義的註解要做的事情實現 序列化註解 retention retentionpolicy.runtime jacksonanno...

可序列化和自定義序列化

序列化技術的主要兩個目的是 持久化儲存 按值封送。net framework支援三種序列化器 binary xml soap.他們各有優缺點,分別列如下 1.binary序列化是完全保真的,因為除非特殊宣告為nonserialized,那麼所有成員 包括私有的和公有的 都會被序列化。該序列化器的結果...

Serializable 自定義序列化

序列化物件可以自定義序列化,也可以使用預設序列化 如何選擇呢?這就要從序列化的目的說起,序列化的目的簡單來說就是儲存,之後可以還原,這就是說只要我們能達到這個目的,都是ok的。如果都ok那麼就可以選擇更ok的形式。看下面這個例子 oddnum 這是乙個極其沒有道理的例子,只是為了說明問題 publi...