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

本文介绍了如何解决Gson在处理Map<String, Object>嵌套类型时的序列化和反序列化问题。通过扩展DefaultTypeAdapters.MapTypeAdapter并创建自定义的FixedMapTypeAdapter,可以处理复杂类型。文章提供了代码示例和使用方法,但仅解决了包含基本类型或Map<String, Object>的嵌套Map的情况。" 136828442,9369275,DC库设置指南——FPGA设计关键步骤,"['FPGA设计', '硬件综合', 'Verilog HDL', 'DC工具']

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)

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值