1. 程式人生 > >Gson 對 Map 巢狀型別的序列化與反序列化

Gson 對 Map 巢狀型別的序列化與反序列化

Gson 對 Map<String, Object>  巢狀型別的序列化與反序列化

gson 簡介:

Gson is a Java library that can be used to convert Java Objects into its JSON representation

gson 擴充套件的一種方式:通過com.google.gson.GsonBuilder 註冊TypeAdapter:

demo code:

遇到的問題:

      遇到這樣的情況,對於現有的隨機的資料(資料格式無法確定,型別複雜),需要使用 Map<String, Object> 型別於json格式互相轉換,其中Map中的Object型別的value可能會是Map<String, Object>.現有的gson版本會遇到 無法序列化或者無法反序列化,因為gson是通過Map<String, Object> 去確定value的型別為Object.class,無法進一步序列化。

改進:

      照貓畫虎,擴充套件現有的com.google.gson.DefaultTypeAdapters.MapTypeAdapter(此類為package visible, 要麼copy程式碼,要麼讓自己的package為com.google.gson)

程式碼demo:

使用方式:

侷限:

      這樣僅僅解決了gson對於巢狀的Map<String, Object>型別的序列化與反序列化,並且要求Map中的value為primative type or

Map<String, Object>(程式碼42行,使用“{”作為判斷是否為complex value type)