开发者社区> 问答> 正文

fastjson的JsonObject 初始化方法参数的问题,能否使用泛型?报错

我在使用fastjson过程中,发现一个使用起来不是很方便的地方,请各位看官闲于时间帮忙看一下

使用场景:

        从 redis 中通过 hgetAll 取出一个用户对象,返回一个Map<String,String> userMap;

        然后我想通过 User user = JSONObject.toJavaObject(new JSONObject(userMap),User.class); 的方式将map转换成一个user对象,但是这段代码是报错的。原因是JSONObject的这个构造方法只支持Map<String,Object>,我从redis中获取到的是Map<String,String>. 

        于是我想通过重写JSONObject的方式,将这里的构造方法参数改为Map<String,? extend Object>,用来满足我的要求。

提问:

        1、java中的类默认继承Object , 那Map<String,Object>是否也包含Map<String,String>,这里是否可以体现出多态呢?

        2、泛型 ,Map<String,? extends Object> 这里是所有继承于Object的类包括Object,那这里使用Map<String,Object> = Map<String,? extends Object>为什么还报错了,原因是否和上面1提出的问题接近呢?(然后这里对java的泛型擦除概念又有点迷糊了,能否一起解答下)

        3、@温少 ,如我上面的功能,需要将任意的Map<String,? extends Object> 通过fastjson序列化为一个对象,需要怎么处理呢?现在我只能先将map toJsonString后,在通过parse(String,Class)的方式转为对象

小弟知识不扎实,还请大神路过时,指点一二,拜谢



展开
收起
爱吃鱼的程序员 2020-06-12 10:35:24 1297 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    www.cockfly.com

    2020-06-12 10:35:43
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载