我有一个简单的问题,但无法解决它,因为我不是很擅长算法! 我有一个这种形式的JSONArray:
[{"values":[{"time":1434976493,"value":"50"},
{"time":1434976494,"value":"100"}],"counter":"counter1"},
{"values":[{"time":1434976493,"value":"200"},
{"time":1434976494,"value":"300"}],"counter":"counter2"},
{"values":[{"time":1434976493,"value":"400"},
{"time":1434976494,"value":"600"}],"counter":"total"}]
我想要做的是获取计数器1和计数器2的整数值,然后将它们除以总计数器并将它们放在列表或数组中。当然,我希望总计数器不受影响!因此计算结果为Counter1.value/total.value
,Counter2.value/total.value
因此,例如计数器1将是这样的:
{"values":[{"time":1434976493,"value":"50/400"},{"time":1434976494,"value":"100/600"}],"counter":"counter1"}
这是一次未完成的尝试:
(假设我有可以迭代的计数器列表:)
int index= counters.indexOf("total");
JSONObject rec = array.getJSONObject(index);
然后我得到了这个总计数器:
{"values":[{"time":1434976493,"value":"400"},
{"time":1434976494,"value":"600"}]
不确定下一步是什么?!
答案 0 :(得分:0)
这就是我要做的。将<JSON STRING HERE>
替换为您要解析的JSON字符串:
ArrayList<ArrayList<Integer>> resultList = new ArrayList<ArrayList<Integer>>();
JSONArray arr = new JSONArray(<JSON STRING HERE>);
for(int i = 0; i < arr.length(); i ++)
{
JSONObject obj = arr.getJSONObject(i);
JSONArray valueArray = obj.getJSONArray("values");
ArrayList<Integer> dataList = new ArrayList<Integer>();
resultList.add(dataList);
for(int j = 0; j < valueArray.length(); j ++)
{
JSONObject valueObject = valueArray.getJSONObject(j);
Integer value = valueObject.getInt("value");
dataList.add(value);
}
}
结果是一个名为resultList的整数列表。祝你好运!
请记住,你必须把整个事情包装好,抓住它。