現在服務彼此之間溝通大多使用JSON這種數據格式來表示
但若物件中的物件中有些是空值時就很麻煩…
當傳到其他服務主機上還需再做判斷且會增加網路傳輸
處理不當甚至會影發奇怪問題
有鑑於此
傳輸一個乾淨的JSON為開發一個API基本且“道德”的指標

本文介紹在開發JAVA時如何將它變得清爽且乾淨

先給一個JSON範例資料

[{"Id":null,"creator":"shawn"},{"Id":null,"creator":null},null]

SETP1

我想使用過JAVA都知道可以使用ObjectMapper來將Non Null的值去掉
其作法大致如下

ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(Include.NON_NULL);
String nonNullString = mapper.writeValueAsString(Collection_物件);
System.out.println(nonNullString);  

執行後原始範例資料會變成

[{"creator":"shawn"},{},null]  

還是很不清爽,那麼再繼續看下去


SETP2

這時候可以使用apache裡commons所提供的工具CollectionUtils
他所提供的filter方法可以用來過濾Collection裡面不要的東西
只要去實作Predicate, Serializable這兩個介面即可
並override evaluate方法
主要的觀念是用反射(Reflection)的概念
將物件的所有Field取出來看是否有值…僅此而已
程式有放上gitHub供大家參考參考
(此物件名稱為AnyElementNotNullPredicate)

實際使用大致像這樣

CollectionUtils.filter(Collection_物件, AnyElementNotNullPredicate.anyElementNotNullPredicate());  

執行結過如下

[{"Id":null,"creator":"123"}]  

SETP3
經過以上清理後
再使用ObjectMapper把其餘Null消除即可摟
最後結果如下

[{"creator":"shawn"}]  

是不是Super清爽呢~