Gson 对 Map 嵌套类型的序列化与反序列化

来源:互联网 发布:201淘宝开店成功经验 编辑:程序博客网 时间:2024/06/05 04:39

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)