fegin调用的时候数据格式转换为linkedhashmap

2023-05-16

在spring cloud项目开发中,使用fegin进行远程调用 

1、接口服务方返回类型为Map(String,Object)类型 

2、接口调用方返回值类型也是Map(String,Object) : 
这里写图片描述
3、通过fegin调用之后返回的结果为linkedHashMap类型!!!非常奇怪: 
这里写图片描述
并显示报错类型为如下: 
java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.ccx.axis.entity.model.UserBean

这里不太清楚为啥通过fegin调用之后返回值类型由Map(String,Object)变成了linkedHashMap,但是需要解决这个问题,就是讲linkedHashMap中的 Object转成bean: 
具体需要如下两句话: 
ObjectMapper mapper = new ObjectMapper(); 
UserBean userBean = mapper.convertValue(resultMap.get("userBean"), UserBean.class);
 
这样就能解决问题了。但是不明白为啥通过rpc调用之后就由HashMap转成了linkedHashMap,如果有了解的,请留言,谢谢。

二更:因为rpc远程调用在底层还是使用的HTTPClient,所以在传递参数的时候,必定要有个顺序,当你传递map的时候map里面的值也要有顺序,不然服务层在接的时候就出问题了,所以它才会从map转为linkedhashMap!spring 有一个类叫ModelMap,继承了linkedhashMap public class ModelMap extends LinkedHashMap ,所以一个接口返回的结果就可以直接用ModelMap来接,注意ModelMap是没有泛型的,不管你返回的结果是什么类型的map,泛型是多复杂的map,都可以直接new一个Modelmap,用它来接返回的结果.

linkHashMap转实体对象

ArraryList下面的数据是linkHashMap的格式,每个linkHashMap其实是对应的数据实体类,这时我们得到这种数据格式时,无法获取数据实体类里面的字段,无法get()到,因为是linkHashMap是键值对形式存在的,这时候我们需要对按其如下方法转换

  1. List<StaffInfoBean> stafflist = (List<StaffInfoBean>) responseBean.getResult();
  2. String jsonData = JsonUtils.objectToJson(stafflist);
  3. stafflist = JsonUtils.jsonToList(jsonData, StaffInfoBean.class);

上述方法需要进行两次的转换,存在性能问题


  
  1. ParameterizedTypeReference<ResponseBean<List<StaffInfoBean>>> typeRef = new ParameterizedTypeReference<ResponseBean<List<StaffInfoBean>>>() {
  2. };
  3. ResponseEntity<ResponseBean<List<StaffInfoBean>>> responseEntity = restTemplate.exchange(Constant.STAFF_SERVICE + "/staffInfo/queryShowAllStaffInfos", HttpMethod.POST, new HttpEntity<>(staffInfoDTO), typeRef);
  4. ResponseBean<List<StaffInfoBean>> responseBean = responseEntity.getBody();
  5. List<StaffInfoBean> stafflist = responseBean.getResult();
这种方法也可以解决,只不过需要包装两层
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

fegin调用的时候数据格式转换为linkedhashmap 的相关文章

  • fegin调用的时候数据格式转换为linkedhashmap

    在spring cloud项目开发中 xff0c 使用fegin进行远程调用 1 接口服务方返回类型为Map String Object 类型 2 接口调用方返回值类型也是Map String Object 3 通过fegin调用之后返回的
  • 有序的Map集合--LinkedHashMap

    由于map集合时无序的 xff0c 我们接触到最多的集合中只有List集合时有序的 通过查了查 xff0c 发现有一种map xff08 LinkedHashMap xff09 集合时有序的 xff0c 可以做到按照用户放入集合的顺序取出集
  • 错误: Entry在LinkedHashMap中不是公共的; 无法从外部程序包中对其进行访问

    遇到了一个很奇怪的问题 xff0c 使用LinkedHashMap来做LRU缓存时 xff0c 重写protected boolean removeEldestEntry Entry lt String String gt eldest 方
  • HashMap,LinkedHashMap,TreeMap应用

    HashMap LinkedHashMap TreeMap应用简介 共同点 xff1a HashMap LinkedHashMap TreeMap都属于Map xff1b Map 主要用于存储键 key 值 value 对 xff0c 根据
  • LinkedHashMap常用方法源码

    类介绍 注释 add contains remove 方法 时间复杂度是O 1 LinkedHashMap的遍历耗时 与 capacity无关 与map的size 元素多少 呈线性 HashMap的遍历 可能比 LinkedHashMap更
  • 为什么 @ResponseBody 将排序的 LinkedHashMap 返回为未排序?

    这是 SpringMVC 控制器代码片段 RequestMapping value getCityList method RequestMethod POST public ResponseBody LinkedHashMap
  • 如何在java中使用LinkedHashMap从sql server数据库填充下拉列表

    在 SQL Server 数据库中 我有一个表 其中包含三列 即 Ref Name Ref from 和 Ref to 现在我想要一个下拉列表来按行保存值 即该行的所有列值应按以下方式位于下拉列表中 参考 1 2014 10 10 07 1
  • 在Java中按键排序HashMap的最佳方法?

    这是我第一次必须订购HashMap在爪哇 我需要按键执行此操作 但在我的情况下 键是一个对象 因此我需要按特定字段进行排序 尝试自己解决这个问题 我考虑继续编写这个简单的代码 private HashMap
  • LinkedHashMap EntrySet 的顺序未保留在流中(Android)

    我正在为注册屏幕创建一个非常简单的表单验证实用程序 并且我遇到了一些关于以下方面的意外行为LinkedHashMap以及从其创建的流entrySet 我将验证结果存储在LinkedHashMap 语句顺序如下 Map
  • 何时在java中使用linkedhashmap而不是hashmap?

    linkedhashmap和hashmap之间的选择有哪些实际场景 我已经完成了每个工作 得出的结论是 linkedhashmap 维护插入顺序 即元素将以与插入顺序相同的顺序检索 而 hashmap 不会维护顺序 那么有人可以告诉我们在什
  • 如何正确使用同步链接哈希图

    尝试通过子类化链接哈希映射来制作 lru 映射 地图通过 collections synchronized 运行 映射的所有用法都被同步块包围 如果它们全部被删除 单元测试也会失败 人们可能会认为它们是不必要的 因为地图是通过 collec
  • 静态 Linkedhashmap 还是 Sharedpreference?

    Android 应用程序具有两种在活动之间传递数据的解决方案 请不要意图额外 public class A public static LinkedHashMap
  • 以正确的顺序从 Web 服务迭代 Json 数据

    我收到来自网络服务的响应 数据位于JSON form JSONObject event 15 00 type 1 status null appointment id null 16 00 type 1 status null appoin
  • 在 TreeMap、HashMap 或 LinkedHashMap 中存储具有重复键的值

    我目前正在开展一个项目 在该项目中我从社会保障网站检索有关姓名的数据 基本上我得到了一个数字x 以及年份y和z 我必须返回 y 到 z 每年的前 x 个名字 所以从网站返回的数据是姓名 排名和年份 我必须将返回的每个名称输入到 TreeMa
  • C++ 中的等效 LinkedHashmap?

    我有一个 Java 程序 我想将其转换为 C 所以 有一个LinkedhashmapJava代码中使用的数据结构 我想将其转换为C 是否有等效的数据类型LinkedHashmap in C 我尝试使用std unordered map但是
  • LinkedHashMap 排序

    正如 LinkedHashMap 的 javadoc 中所指定的 如果将键重新插入到映射中 插入顺序不会受到影响 但在运行下面的程序时 我注意到在更改访问顺序时再次插入相同的键 Map
  • LinkedHashMap 的 ConcurrentModificationException

    不确定是什么触发了java util ConcurrentModificationException当我迭代时LinkedHashMap下面代码中的结构 使用Map Entry方法效果很好 从之前的帖子中没有得到关于触发此问题的良好解释 任
  • 序列化/反序列化 LinkedHashMap (android) java

    所以我想将 LinkedHashMap 传递给意图 SEND THE MAP Intent singlechannel new Intent getBaseContext singlechannel class singlechannel
  • 使用 Java 中的映射实现的队列数据结构,大小限制为 5

    我有带有一些记录的地图 我想将该映射限制为仅 5 个元素 并且每当添加新元素时 应删除第一个元素 并应在映射的最后位置添加新元素 类似于 FIFO 的东西 任何人都可以建议我使用一个数据结构或解决方案本身 E g Map
  • 如何获取 LinkedHashMap 的 keyIterator?

    通过查看Sun的LinkedHashMap的源代码 我发现有一个名为Key Iterator的私有类 我想使用它 我怎样才能获得访问权限 您可以通过致电获取 myMap keySet iterator 你甚至不需要知道它的存在 它只是实现的

随机推荐

  • 小米 pro 笔记本拆机-加固态

    前言 小米 pro 笔记本 256G 的固态 xff0c 有点不够用 xff0c 因此想加装固态 网上一打听 xff0c 拆机加固态售后要 100 元人民币 这哪行呀 不能这么便宜小米了 xff0c 100块我都不给你 xff01 准备工作
  • android四大组件之Activity - (2)onNewIntent()的作用

    要说onNewIntent 就不得不提到Activity的四种启动模式 分别是 1 standard 标准模式 也是系统默认的模式 每次都会新建Activity放置任务栈中 2 singleTop 模式 这个模式能够确保每次使用的Activ
  • 解决谷歌无法加载扩展程序

    方法一 1 先将下载的文件 crx格式修改为 zip 2 然后解压zip格式文件 3 选择加载解压过的zip文件 即可 方法二 1 在Google Chrome浏览器的桌面快捷方式上鼠标右键 xff0c 选择属性 R xff0c 进入如下界
  • 好玩的CMD几个命令

    1 msg命令 如果是在局域网中使用msg命令可以达到恶作剧的效果 msg server 192 168 1 26 东东是个人物 xff01 server 这里输入要发送人的IP地址 后面是输出的文字 2 Nslookup 检查网站的ip地
  • MySQL数据库使用相关语句

    目录 MySQL数据库的安装位置创建命令建库查看插入 编码格式配置文件修改数据库外网权限索引 MySQL数据库的安装位置 etc my cnf mysql配置文件 usr bin 客户端程序和脚本 usr sbin mysqld 服务器 v
  • C++筛法求素数

    假定题目为输出n以内的所有素数 一般方法 最容易理解的一个方法 xff0c 从0遍历到根号n判断n是否能被整除 使用时只需要记住判断到根号n就可以了 但是时间复杂度是o xff08 n sqrt xff08 n xff09 xff09 xf
  • 七 对话框

    1 模态与非模态对话框 模态对话框创建 CTestDlg dlg dlg DoModal 非模态对话框的创建 CTestDlg pDlg 61 new CTestDlg pDlg gt Create IDD DIALOG1 this pDl
  • 如何保证缓存与数据库的一致性

    关系型数据库系统给我们带来许多惊艳的特性 xff0c 例如 xff1a ACID 但为了维护这些特性 xff0c 数据库的性能在高负载下也会下降 为了提高性能 xff0c 通常会在项目的应用层 xff08 处理业务逻辑 xff09 和存储层
  • linux自定义图标主题目录及启动路径

    启动图标 就是按windows键出现一大堆应用的快捷方式 xff08 xxxx desktop xff09 目录 xff1a usr share applications 图标文件目录 xff1a usr share icons
  • Centos7 yum升级内核

    1 查看当前内核版本 uname r 3 10 0 1160 25 1 el7 x86 64 uname a Linux localhost localdomain 3 10 0 1160 25 1 el7 x86 64 1 SMP Wed
  • Ubuntu上安装Git

    1 安装git span class token function apt get span span class token function install span span class token function git span
  • AE或PR2020版本驱动程序或显卡不兼容问题解决

    AE或PR2020版本驱动程序或显卡不兼容问题解决 建议系统提前备份 xff0c 防止后期出错 驱动程序不兼容 xff1a AE为例 1 点击修复 gt 跳转到浏览器界面 gt 建议驱动程序版本 xff08 27 20 100 8476 或
  • Qt调用js和js交互, QWebengine调用js

    QWebengine 调用js有两种方式 通过QWebChannel调用 写一个类然后继承QObject用于和js进行通信交互 ifndef TINTERACT OBJECT H define TINTERACT OBJECT H incl
  • LinuxMint KDE任务栏消失恢复

    桌面右击 gt 添加面板 gt 添加默认面板 就恢复了
  • 神奇的输入法——小狼毫——个性化设置

    电脑硬盘坏了 xff0c 重新换了硬盘 xff0c 自然就要把软件重新安装一遍 个人喜欢用 五笔输入法 xff0c 之前一直用的 极点五笔 xff0c 但是它一直没有更新 偶然间搜索到了 小狼毫 xff0c 用户评价都不错 xff0c 果断
  • MySQL explain字段总结

    目录 作用表组成id xff08 表的读取顺序 xff09 select type xff08 数据读取操作的操作类型 xff09 字段 type字段 possible key xff08 那些索引可以使用 xff09 key xff08
  • 查找 替换 细节

    查找内容 可以快速搜索每一处指定单词或词组 1 单击 编辑 菜单中的 查找 命令 2 在 查找内容 框内键入要查找的文字 3 选择其他所需选项 若要一次选中指定单词或词组的所有实例 xff0c 请选中 突出显示所有在该范围找到的项目 复选框
  • Anaconda和pip异常

    一 Anaconda异常 1 No module named unicodedata 正常使用时出现这个问题 xff0c 与其想着怎么解决 xff0c 不如直接重装python环境或者试试卸载并重新安装pip 卸载并重新安装pip请参考博客
  • Linux下批量替换tab到空格的转换

    将所有文件中的tab批量替换为空格 find type f exec sed i orig 39 s t g 39 43 其中 34 t 34 后面跟的是空格的数量 xff0c 我这里是4个空格 原链接 xff1a https stacko
  • fegin调用的时候数据格式转换为linkedhashmap

    在spring cloud项目开发中 xff0c 使用fegin进行远程调用 1 接口服务方返回类型为Map String Object 类型 2 接口调用方返回值类型也是Map String Object 3 通过fegin调用之后返回的