現在服務彼此之間溝通大多使用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清爽呢~