我试图将JSONObject转换为JSONArray,并导致typeMismacth错误。我试图弄清楚发生了什么,但我坚持了下来。
private void prepareReportList(String reportList) {
try {
JSONObject task_type_list = null;
try {
task_type_list = new JSONObject(reportList);
JSONArray data = task_type_list.getJSONArray("data");
int length = data.length();
for (int i = 0; i < length; i++) {
addReportData(data.getJSONObject(i));
}
} catch (JSONException e) {
e.printStackTrace();
}
} finally {
setDataValuesToView(caregiverReportList);
}
}
这是我的代码。
,响应返回此输出,
{
"data":{
"c_correctCount":"0",
"c_total":"0",
"r_correctCount":"0",
"r_total":"0",
"p_correctCount":"0",
"p_total":"0",
"i_correctCount":"0",
"i_total":"0"
}
}
我如何解决这个问题。我需要将响应转换为JSONArray。如何实现它。
答案 0 :(得分:2)
请尝试以下代码
private void prepareReportList(String reportList) {
try {
JSONObject task_type_list = null;
try {
task_type_list = new JSONObject(reportList);
JSONObject jObjData = task_type_list.getJSONObject("data");
Iterator iterator = jObjData.keys();
while (iterator.hasNext()) {
try {
String key = (String) iterator.next();
JSONObject obj = jObjData.getJSONObject(key);
addReportData(obj);
} catch (Exception e) {
e.getStackTrace();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
} finally {
setDataValuesToView(caregiverReportList);
}
}
答案 1 :(得分:1)
您不能将 data 元素视为JSONArray,因为它清楚地表明 data 是无序键,带有花括号{}的值对的集合。>
如果您的最终目标是将共享相同字母前缀的每两对分组为一个JSONObject并将它们包装在JSONArray中,那么您必须手动进行
答案 2 :(得分:1)
检查此解决方案
//this is the jsonobject which is getting from server
JSONObject dataObj= json.getJSONObject("data");
Iterator x = dataObj.keys();
//here we are creating jsonArray object
JSONArray jsonArray = new JSONArray();
//by looping Iterator converting jsonobject to jsonarray
while (x.hasNext()){
String key = (String) x.next();
jsonArray.put(dataObj.get(key));
}
如有疑问,请在评论部分继续编码:)