我需要获取 ArrayList<JSONObject>()
中的值,如 ArrayList<List<String>>()
如果是 ArrayList<List<String>>
,我使用了以下代码
for(List<String> dreport : report) {
for(String ddreport: dreport) {
// CODE GOES HERE
}
}
在新场景中,我需要使用该功能。但是该值包含在ArrayList()中,而不是字符串列表
中示例代码:
List<JSONObject> json = new ArrayList<JSONObject>();
JSONObject json_data1 = new JSONObject();
json_data1.put("count", "value");
json_data1.put("count", "value");
json_data1.put("count", "value");
json.add(json_data1);
答案 0 :(得分:2)
ArrayList<JSONObject> jsonObjects = new ArrayList<JSONObject>();
//ADD objects in the jsonObjects
ArrayList<List<String>> jsonObjectsResultData = new ArrayList<>();
//Loop for the all JSONObject
for (JSONObject jsonObject : jsonObjects){
Iterator<String> keys= jsonObject.keys();
List<String> jsonObjectsValues = new ArrayList<String>();
//Loop for the JSONObject keys and values
while (keys.hasNext())
{
try{
String keyValue = (String)keys.next();
String valueString = jsonObject.getString(keyValue);
jsonObjectsValues.add(valueString);
} catch (Exception e){
e.printStackTrace();
}
}
jsonObjectsResultData.add(jsonObjectsValues);
}
//Your result array list
Log.i("RESULT DATA >>", jsonObjectsResultData.toString());
答案 1 :(得分:1)
我对上述答案进行了一些修改,这样可以减少占用的空间。我们不需要为密钥设置分隔迭代器。
ArrayList<JSONObject> jsonObjects = new ArrayList<JSONObject>();
//ADD objects in the jsonObjects
ArrayList<List<String>> jsonObjectsResultData = new ArrayList<>();
//Loop for the all JSONObject
for (JSONObject jsonObject : jsonObjects){
String jsonStr = jsonObject.toString();
String[] strArr = jsonObject.split(",");
List<String> jsonObjectsValues = new ArrayList<String>();
for(int i=0;i<strArr.length;i++){
jsonObjectsValues.add(strArr[i].split(":")[1]);
}
jsonObjectsResultData.add(jsonObjectsValues);
}
//Your result array list
Log.i("RESULT DATA >>", jsonObjectsResultData.toString());