Нужна помощь в форматировании массива JSON

У меня есть этот массив для моего веб-сервиса: {"update":true,"msg":"Logged in Bro","role":"admin"}

Теперь мне нужно использовать это в Android, чтобы обойти мое приложение после входа в систему. Так что мне здесь нужен способ форматирования этих данных в namevaluepairs или отдельные переменные, чтобы я мог их использовать.

Я в настоящее время использую это, но это принудительно закрывает мое приложение:

try {

            JSONObject jsonRootObject = new JSONObject(result);

            //Get the instance of JSONArray that contains JSONObjects
            JSONArray jsonArray = jsonRootObject.optJSONArray("");

            //Iterate the jsonArray and print the info of JSONObjects
            for(int i=0; i < jsonArray.length(); i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);

                update = jsonObject.optString(jsonObject.optString("update").toString());
                message = jsonObject.optString("msg").toString();
                role = jsonObject.optString(jsonObject.optString("role").toString());


            }

        } catch (JSONException e) {e.printStackTrace();}

2 ответа

Решение

Для анализа предоставленного вами JSON вам нужно что-то вроде этого:

   JSONObject jsonObject = new JSONObject(jsonString);

   update = jsonObject.optBoolean("update");
   message = jsonObject.optString("msg");
   role = jsonObject.optString("role");

Я предполагаю result содержит ваш JSON как String:

{"update":true,"msg":"Logged in Bro","role":"admin"}

Следовательно,

JSONObject jsonRootObject = new JSONObject(result);

создает объект JSON с тремя свойствами, update, msg а также role, Вы можете получить к ним доступ следующим образом:

boolean update = jsonRootObject.optBoolean("update");
String msg = jsonRootObject.optString("msg");
String role = jsonObject.optString("role");

Ваш код падает на jsonArray.length() так как jsonArray == null: jsonRootObject.optJSONArray(""); возвращается null так как нет массива с ключом "" в вашем объекте.


optString("msg").toString();

нелогично само по себе. optString либо возвращает String или же null, Ваш код не работает, если свойство msg нет Если вы ожидаете, что недвижимость будет присутствовать, используйте getString вместо optString, В общем, не звоните toString() на Strings.


jsonObject.optString(jsonObject.optString("role").toString());

тоже не имеет смысла. В вашем объекте нет ключа, равного значению свойства role,

Другие вопросы по тегам