Как исправить JSONObject не может преобразовать в JSONArray - PullRequest
0 голосов
/ 07 мая 2019

Я попытался преобразовать 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. Как это реализовать.

Ответы [ 3 ]

2 голосов
/ 07 мая 2019

Пожалуйста, попробуйте ниже код

 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 голос
/ 07 мая 2019

Проверьте это решение

//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));
}

Если у вас есть какие-либо сомнения, спросите меня, в разделе комментариев продолжайте кодировать :)

1 голос
/ 07 мая 2019

Вы не можете обрабатывать элемент data как JSONArray, поскольку ясно, что data представляет собой набор неупорядоченного ключа, пары значений с фигурными скобками {}.

Если ваша конечная цель состоит в том, чтобы сгруппировать каждые две пары, которые имеют одинаковый буквенный префикс, в JSONObject и обернуть их в JSONArray, то вы должны сделать это вручную

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...