源数据格式(list)
{
"dataPoint": {
"value": 1.0,
"timestamp": 1508208780000
},
"resourceId": 11150,
"resourceName": "duanzhenshuai.sunyainfo.com",
"metricId": 10720,
"metricName": "Availability"
},
{
"dataPoint": {
"value": 0.00530464217547344,
"timestamp": 1508208600000
},
"resourceId": 11150,
"resourceName": "duanzhenshuai.sunyainfo.com",
"metricId": 10722,
"metricName": "Transfer"
},
{
"dataPoint": {
"value": 0.3743428756508957,
"timestamp": 1508208600000
},
"resourceId": 11150,
"resourceName": "duanzhenshuai.sunyainfo.com",
"metricId": 10725,
"metricName": "CpuUsage"
}
目的数据格式
"data": {
"Availability": "1.0",
"Transfer": "0.00530464217547344",
"CpuUsage": "0.3743428756508957"
}
给出java或json的解决方案都可以,目前只能想到if-else或switch-case判断,但这样如果增添字段会非常麻烦?求指点
现在能想到的也是用if判断,怕增加字段的话,那个方法要不就传个String...参数类型,然后根据这个参数来写个通用的if判断。
/**
* @param mapKeys 待转换的名称数组,与list顺序对应
* @param list
* @return
*/
public Map<String, String> convert(String [] mapKeys,JSONArray list){
Map<String, String> map = new HashMap<String, String>();
for (int i = 0; i < list.size(); i++) {
map.put(mapKeys[i], list.getJSONObject(i).getJSONObject("dataPoint").getString("value"));
}
return map;
}
定义一个数组作为参数,数组中放名称,顺序与list对应上,加入你增加一个,你的列表也得增加一个