ошибка: незарегистрированное исключение JSONException в Android - PullRequest
0 голосов
/ 11 декабря 2019

Итак, в основном я создал карту в своем классе FlagReportStamped и итерировал ее по ключам map.keyset, и теперь у меня возникает ошибка типа ERROR

: незарегистрированное исключение JSONException;должен быть пойман или объявлен брошенным

Может ли кто-нибудь помочь мне реорганизовать мой код? Я здесь только новичок.

Класс активности:

      //flagreport
      final Call<FlagReportStamped> callFlagReport = jsonAPI.getReportID();
      callFlagReport.enqueue(new Callback<FlagReportStamped>() {
          @Override
          public void onResponse(Call<FlagReportStamped> call, Response<FlagReportStamped> response) {

              if (!response.isSuccessful()) {
                  Log.e("mainAction", "Code: " + response.code());
                  return;
              }


              JSONObject jObject = new JSONObject(response.body().getFlagReport().getMap());
              Iterator<?> keys = jObject.keys();

              while( keys.hasNext() ){
                  String key = (String)keys.next();
                  boolean value = jObject.getBoolean(key); // I get an error here
                  SpannableString ss = new SpannableString(key);//text to change color
                  ss.setSpan(new ForegroundColorSpan(value ? Color.BLUE: Color.RED), 0, ss.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
                  flagName.append(ss);
              }

          }

          @Override
          public void onFailure(Call<FlagReportStamped> call, Throwable t) {
              call.cancel();
          }
      });
  }

По сути, я пытаюсь сделать так, чтобы отображались только имена объектов из моего json, и вместо отображения их значений / статуса я также повторяю его только по имени объекта и меняю его цвет в зависимости отих значения / статус.

1 Ответ

0 голосов
/ 11 декабря 2019

Проблема в строке ниже, потому что это может быть ваша строка ответа не в формате объекта json. вот почему вы вынуждены выдать исключение json

JSONObject jObject = new JSONObject(response.body().getFlagReport().getMap());

, поэтому закройте свой фрагмент кода с помощью try block

try{
       JSONObject jObject = new JSONObject(response.body().getFlagReport().getMap());
            Iterator<?> keys = jObject.keys();
        while( keys.hasNext() ){
            String key = (String)keys.next();
            boolean value = jObject.getBoolean(key); // I get an error here
            SpannableString ss = new SpannableString(key);//text to change color
            ss.setSpan(new ForegroundColorSpan(value ? Color.BLUE: Color.RED), 0, ss.length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
            flagName.append(ss);
        }
    }catch(JSONException e){
       e.printStacktrace();
    }
...