还是上周写SSO的时候,接收登录服务器中的json数据里的值的解决过程
对接接口返回的数据格式:
{
"success":true,
"errorCode":0,
"data":{
"userId":"93ea76e2-2755-4ada-aef1-889ae0d6e158",
"loginName":"test",
"mobiles":[
],
"roles":[
],
"passwordUpdateTime":1538033566000
},
"message":null
}
需要取到success和data中userId和loginName
1、首先接收整段json数据,将接收到的json数据转为String类型,直接用String接收json转 的 seccess数据
2、将data再次转为单独的json数据,然后再次用String类型接收data转回的json数据即可
代码:
String map = this.httpsClients.doGet(checkUserUrl,"", params);
if (StringUtils.isEmpty(map)){
return loginVo;
}
JSONObject json = JSONObject.parseObject(map); //接收到所有传过来的json数据
Boolean success = json.getBoolean("success"); //直接json转Boolean类型,用Boolean类型的success接收叫做success的数据
String data = json.getString("data"); //用String接收json数据中的data数据
JSONObject dataj = JSONObject.parseObject(data); //再将data转为单独的json数据
String userId = dataj.getString("userId"); //再次将data转为String数据并接收
String loginName = dataj.getString("loginName");
这种被包含多层的数据需要多次转String转json再转String操作
因为数据debugger得在测试环境才能获取到那唯一的token,token用了一次之后就用不了了,所以不能上图,不然直接将debugger的过程数据放上面更直观