在Java {J}中使用JSONArray进行计算

时间:2015-06-22 13:00:47

标签: java arrays json

我有一个简单的问题,但无法解决它,因为我不是很擅长算法! 我有一个这种形式的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.valueCounter2.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"}]

不确定下一步是什么?!

1 个答案:

答案 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的整数列表。祝你好运!

请记住,你必须把整个事情包装好,抓住它。