fastjson的序列化反序列化 不能保留 枚举类型的Type信息

pqwbnv8z  于 6个月前  发布在  其他
关注(0)|答案(5)|浏览(63)

在工作中遇到这样一个场景
Map<KeyType,Map<String,String>> enumMap = Maps.newHashMap();
KeyType 是一个枚举
序列化之后 就只剩下了一个枚举名称

{"@type":"java.util.HashMap","mail":{"@type":"java.util.HashMap","valKey_2":"val_val_2","valKey_1":"val_val_1"}}

这样反序列化之后变成 实际就成了
Map<String,Map<String,String>> 这样直接拿来使用的时候 就会get 到null

请教能不能像bean 一样 保留其Type信息?

Map<KeyBean,Map<String,String>> beanMap
这样的序列化之后,key的Type信息是保留了的

{"@type":"java.util.HashMap",{"@type":"com.test.KeyBean","money":10,"name":"just bean","order":3}:{"@type":"java.util.HashMap","valKey_2":"val_val_2","valKey_1":"val_val_1"}}

6mw9ycah

6mw9ycah1#

当前的设计无法保存Enum的数据类型

mkshixfv

mkshixfv2#

程序里map的key别用enum,直接用string吧,
改起来也容易。

qyuhtwio

qyuhtwio3#

引用的jar ,基本改不动。 看了下似乎 Serializer 增加自定义也做不了 ,Serializer 似乎都是value进行处理,源码没完全搞明白,请教有无办法

相关问题