远程接口返回的数据为LinkedTreeMap的转换问题

远程接口返回的数据

{
  "success": true,
  "msg": "",
  "data": {
    "00000": {
      "nodeName": "测试潘",
      "lastLinkDate": 1555309108081,
      "executableTasks": 0,
      "currExecuteStatusMap": {},
      "nodeId": "00000",
      "nodePid": "0"
    }
  }
}

 如果直接获取result.get("data")将获取的对象是一个LinkedTreeMap,实际上我传过来的是一个 Map<String, NodeStatus> NODE_MAP = new ConcurrentHashMap<>()

public class NodeStatus {
    private String nodeId;  // 节点id
    private String nodeName; // 节点名称
    private String nodePid;  // 节点父id
    private long lastLinkDate; // 最后连接时间
    private int executableTasks=0; // 可执行任务数
    private Map<String, TaskStatus> currExecuteStatusMap; // 当前节点执行的任务状态
}

 所以需要进行转化

Map<String,NodeStatus> subNodeStatusMap = GsonUtils.get().fromJson(
        GsonUtils.get().toJson(MapUtils.get(resultMap, "data")), new TypeToken<Map<String,NodeStatus>>(){}.getType());

 重要的是 new TypeToken<Map<String,NodeStatus>>(){}.getType()   ,红色的部分就是要转成的类。Gson要使用google的。

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值