远程接口返回的数据
{
"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的。