http請求返回ObjectJson,Array之類轉換類型


以下所說的類來自:package com.alibaba.fastjson
1,形如以下返回,其實是個json的map形式的返回
{
"success": true,
"message": null,
"data": {
"cpu_total": [
12880,
12880,
12880,
......
"cpu_allocated": [
4411,
4447,
4458,
4480,
4485,
......
 
請求及返回如下(eccHttpUtils在上一篇有詳細解釋):
JSONObject requestBody = new JSONObject();
requestBody.put("Region", region);
JSONObject postResult = eccHttpUtils.doPost(url.concat(cpumem) , requestBody);

Map<String, String> map = JSONObject.parseObject(postResult.getJSONObject("data").toJSONString(), new TypeReference<Map<String, String>>(){}.getType());//先把返回的data解析成一個map
List<Integer> cpuTotalList = JSONObject.parseObject(map.get("cpu_total"), new TypeReference<List<Integer>>() {}.getType());//對於data這個map,拿到key所對應的value,value是個List 如
 [
12880,
12880,
12880,
......]
 順帶記錄下List的倒序轉換方法:
   Collections.reverse(cpuTotalList);
以及List取第幾位到第幾位的方法,注意不是在原有list直接截取,而是返回一個 list!截取原則左閉右開:
List<Integet> newList = cpuTotalList.subList(0, 15);

2,形如以下返回,其實是json的Array(List)形式的返回:
{
"data": [
{
"groupName": "組名1",
"yaxis": 67
},
{
"groupName": "組名2",
"yaxis": 66
},
......
JSONObject postResult = eccHttpUtils.doPost(url.concat(top).concat(finCloudReq.getInstanceTop()), JSONObject.parseObject(JSONObject.toJSONString(finCloudReq)));//對象轉JSONObject
List<FinCloudModel> models = JSON.parseArray(postResult.getJSONArray("data").toJSONString(), FinCloudModel.class);
因為返回的data里面的就是一個個對象的list,因此采用
getJSONArray去解析這個data。值得注意的是
.toJSONString(),之前采用toString()方法,返回的string是無法轉成JsonArray的,會拋異常,因為這么轉出來的是個字符串,不是json型的字符串,沒有{}包着。
3,請求時的對象,轉成JSONObject的方法:
JSONObject.parseObject(JSONObject.toJSONString(outNetReq))



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM