以下操作都在Test2类 中编写
package core.util;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class Test2 {
public static void main(String[] args) {
List<Map<String,Object>> dataList =new ArrayList<Map<String,Object>>();//存放所有数据
String jsonStr1 = "{\"resultCode\" : 0,\"result\" : [ {\"orgId\" : null,\"categoryId\" : \"333f1328e6c6a7f3c2c7\",\"categoryName\" : \"北京分公司\",\"workOrderCount\" : null,\"planCounter\" : 15,\"actualCounter\" : 6,\"rank\" : null}, {\"orgId\" : null,\"categoryId\" : \"fc1bb1880968e77b5020\",\"categoryName\" : \"上海分公司\",\"workOrderCount\" : null,\"planCounter\" : 22,\"actualCounter\" : 13,\"rank\" : null}],\"msgId\" : \"fb971668\",\"success\" : true}";
String jsonStr2 = "{\"resultCode\" : 0,\"result\" : [ {\"orgId\" : null,\"categoryId\" : \"333f1328e6c6a7f3c2c7\",\"categoryName\" : \"北京分公司\",\"workOrderCount\" : null,\"planCounter\" : 25,\"actualCounter\" : 5,\"rank\" : null}, {\"orgId\" : null,\"categoryId\" : \"fc1bb1880968e77b5020\",\"categoryName\" : \"上海分公司\",\"workOrderCount\" : null,\"planCounter\" : 36,\"actualCounter\" : 6,\"rank\" : null}],\"msgId\" : \"5225121a\",\"success\" : true}";
String jsonStr3 = "{\"resultCode\" : 0,\"result\" : [ {\"orgId\" : null,\"categoryId\" : \"333f1328e6c6a7f3c2c7\",\"categoryName\" : \"北京分公司\",\"workOrderCount\" : null,\"planCounter\" : 25,\"actualCounter\" : 8,\"rank\" : null}, {\"orgId\" : null,\"categoryId\" : \"fc1bb1880968e77b5020\",\"categoryName\" : \"上海分公司\",\"workOrderCount\" : null,\"planCounter\" : 115,\"actualCounter\" : 8,\"rank\" : null}],\"msgId\" : \"e70ced01\",\"success\" : true}";
String jsonStr4 = "{\"resultCode\" : 0,\"result\" : [ {\"orgId\" : null,\"categoryId\" : \"333f1328e6c6a7f3c2c7\",\"categoryName\" : \"北京分公司\",\"workOrderCount\" : null,\"planCounter\" : 40,\"actualCounter\" : 10,\"rank\" : null}, {\"orgId\" : null,\"categoryId\" : \"fc1bb1880968e77b5020\",\"categoryName\" : \"上海分公司\",\"workOrderCount\" : null,\"planCounter\" : 100,\"actualCounter\" : 30,\"rank\" : null}],\"msgId\" : \"7589d0d7\",\"success\" : true}";
//把json串jsonStr1、jsonStr2、jsonStr3、jsonStr4转成需要的新list1、list2、list3、list4
List<Map<String,Object>> list1=getCommon(jsonStr1,"1");
List<Map<String,Object>> list2=getCommon(jsonStr2,"2");
List<Map<String,Object>> list3=getCommon(jsonStr3,"3");
List<Map<String,Object>> list4=getCommon(jsonStr4,"4");
System.out.println("list1--"+list1);
System.out.println("list2--"+list2);
System.out.println("list3--"+list3);
System.out.println("list4--"+list4);
/**
* 输出如下:
* list1--[{optcompletrate=0.40, categoryName=北京分公司, categoryId=333f1328e6c6a7f3c2c7}, {optcompletrate=0.59, categoryName=上海分公司, categoryId=fc1bb1880968e77b5020}]
* list2--[{inspcompletrate=0.20, categoryName=北京分公司, categoryId=333f1328e6c6a7f3c2c7}, {inspcompletrate=0.17, categoryName=上海分公司, categoryId=fc1bb1880968e77b5020}]
* list3--[{jobcompletrate=0.32, categoryName=北京分公司, categoryId=333f1328e6c6a7f3c2c7}, {jobcompletrate=0.07, categoryName=上海分公司, categoryId=fc1bb1880968e77b5020}]
* list4--[{termusedrate=0.25, categoryName=北京分公司,categoryId=333f1328e6c6a7f3c2c7}, { termusedrate=0.30, categoryName=上海分公司,categoryId=fc1bb1880968e77b5020}]
*/
//把4个list分别合并成一个dataList
dataList.addAll(list1);
dataList.addAll(list2);
dataList.addAll(list3);
dataList.addAll(list4);
System.out.println("dataList=="+dataList);
/**
* 输出如下:
* dataList==[{optcompletrate=0.40, categoryName=北京分公司, categoryId=333f1328e6c6a7f3c2c7},
* {optcompletrate=0.59, categoryName=上海分公司, categoryId=fc1bb1880968e77b5020},
* {inspcompletrate=0.20, categoryName=北京分公司, categoryId=333f1328e6c6a7f3c2c7},
* {inspcompletrate=0.17, categoryName=上海分公司, categoryId=fc1bb1880968e77b5020},
* {jobcompletrate=0.32, categoryName=北京分公司, categoryId=333f1328e6c6a7f3c2c7},
* {jobcompletrate=0.07, categoryName=上海分公司, categoryId=fc1bb1880968e77b5020},
* {categoryName=北京分公司, categoryId=333f1328e6c6a7f3c2c7, termusedrate=0.25},
* {categoryName=上海分公司, categoryId=fc1bb1880968e77b5020, termusedrate=0.30}]
* */
List<Map<String,Object>> countList =getNewList(dataList);
System.out.println("新list======"+countList);
/**
* 输出如下:
* 新list======[{jobcompletrate=0.25, optcompletrate=0.40, inspcompletrate=0.25, categoryName=北京分公司, categoryId=333f1328e6c6a7f3c2c7, termusedrate=0.25},
* {jobcompletrate=0.30, optcompletrate=0.59, inspcompletrate=0.30, categoryName=上海分公司, categoryId=fc1bb1880968e77b5020, termusedrate=0.30}]
*
* */
//转成新的json
String jsonnew=JSON.toJSONString(countList);
System.out.println("新json======"+jsonnew);
//转成需要的格式如下:
/**
* 输出如下:
* 新json======[{"jobcompletrate":"0.25","optcompletrate":"0.40","inspcompletrate":"0.25","categoryName":"北京分公司","categoryId":"333f1328e6c6a7f3c2c7","termusedrate":"0.25"},
* {"jobcompletrate":"0.30","optcompletrate":"0.59","inspcompletrate":"0.30","categoryName":"上海分公司","categoryId":"fc1bb1880968e77b5020","termusedrate":"0.30"}]
*/
}
}
/***
* 处理json返回的数据中,需要字段转成list方法
* */
public static List<Map<String,Object>> getCommon(String jsonstr,String str){
JSONObject root = new JSONObject().parseObject(jsonstr);// 将json格式的字符串转换成json
JSONArray dataArr = root.getJSONArray("result");//根据json对象中数组的名字解析出其所对应的值
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
Map<String,Object> map;
//对解析出的数组进行遍历,获取所有的点位值
for (int i = 0; i < dataArr.size(); i++) {
map =new HashMap<String,Object>();
JSONObject dataBean = (JSONObject) dataArr.get(i);//得到数组中对应下标对应的json对象
//根据json对象中的数据名解析出相应数据
String categoryId = dataBean.getString("categoryId");
String categoryName = dataBean.getString("categoryName");
int planCounter = Integer.parseInt(dataBean.getString("planCounter"));
int actualCounter = Integer.parseInt(dataBean.getString("actualCounter"));
float num=(float)actualCounter / planCounter;
DecimalFormat df = new DecimalFormat("0.00");//格式化小数
String rate = df.format(num);//返回的是String类型
map.put("categoryId", categoryId);
map.put("categoryName", categoryName);
if("1".equals(str)){//1、第一个接口
map.put("optcompletrate", rate);
}else if("2".equals(str)){//2、第二个接口
map.put("inspcompletrate", rate);
}else if("3".equals(str)){//3、第三个接口
map.put("jobcompletrate", rate);
}else{//4、第三个接口
map.put("termusedrate", rate);
}
list.add(map);
}
return list;
}
/***
* 将list转成业务需要的list方法
* */
public static List<Map<String,Object>> getNewList(List<Map<String,Object>> dataList){
List<Map<String, Object>> countList = new ArrayList<Map<String,Object>>();//用于存放最后的结果
for (int i = 0; i < dataList.size(); i++) {
String categoryId = String.valueOf(dataList.get(i).get("categoryId").toString());
int flag = 0;//0为新增数据,1为增加count
for (int j = 0; j < countList.size(); j++) {
String newcategoryId = String.valueOf(countList.get(j).get("categoryId").toString());
if (categoryId.equals(newcategoryId)) {
String optcompletrate="";//声明第一个接口操作率
String inspcompletrate="";//声明第二个接口完成率
String jobcompletrate="";//声明第三个接口百分率
String termusedrate="";//声明第四个接口合格率
if(String.valueOf(dataList.get(i).get("optcompletrate"))!="null"){
optcompletrate =String.valueOf(dataList.get(i).get("optcompletrate"));
}else if(String.valueOf(dataList.get(j).get("optcompletrate"))!="null"){
optcompletrate =String.valueOf(dataList.get(j).get("optcompletrate"));
}
if(String.valueOf(dataList.get(i).get("inspcompletrate"))!="null"){
inspcompletrate =String.valueOf(dataList.get(i).get("inspcompletrate"));
}else if(String.valueOf(dataList.get(j).get("inspcompletrate"))!="null"){
inspcompletrate =String.valueOf(dataList.get(j).get("inspcompletrate"));
}
if(String.valueOf(dataList.get(i).get("jobcompletrate"))!="null"){
inspcompletrate =String.valueOf(dataList.get(i).get("jobcompletrate"));
}else if(String.valueOf(dataList.get(j).get("jobcompletrate"))!="null"){
inspcompletrate =String.valueOf(dataList.get(j).get("jobcompletrate"));
}
if(String.valueOf(dataList.get(i).get("termusedrate"))!="null"){
inspcompletrate =String.valueOf(dataList.get(i).get("termusedrate"));
}else if(String.valueOf(dataList.get(j).get("termusedrate"))!="null"){
inspcompletrate =String.valueOf(dataList.get(j).get("termusedrate"));
}
countList.get(j).put("optcompletrate", optcompletrate);
countList.get(j).put("inspcompletrate", inspcompletrate);
countList.get(j).put("jobcompletrate", inspcompletrate);
countList.get(j).put("termusedrate", inspcompletrate);
flag = 1;
continue;
}
}
if (flag == 0) {
countList.add(dataList.get(i));
}
}
return countList;
}