Проблема с синтаксическим анализом JSON — как обработать JSONArray и JSONObject в одном фрагменте кода

#android #json

#Android #json

Вопрос:

У меня есть фрагмент кода, который должен обрабатывать как JSONObject, так и JSONArray (он может возвращать любой из них). Это выдает мне исключение, когда я получаю объект вместо массива. Одно из решений — проверить, является ли первый символ { или a [, но я надеюсь на лучший вариант.

 JSONObject responseMsgObject = new JSONObject(dummyJson);
    if (responseMsgObject.has("messages")) {
        String successString = responseMsgObject.getString("response");
        if (successString.equalsIgnoreCase("SUCCESS")) {
            JSONArray messageArray = responseMsgObject
                    .getJSONArray("messages");
            return messageArray;
        }
    } else
        return null;
  

Ответ №1:

 JSONObject responseMsgObject = new JSONObject(dummyJson); 
    if (responseMsgObject.has("messages")) {
         String successString = responseMsgObject.getString("response");
         if (successString.equalsIgnoreCase("SUCCESS")) {

             JSONArray messageArray = responseMsgObject
                     .optJSONArray("messages");  //optJSONArray returns null if doesnt exist or is not a JSONArray
             if(messageArray!=null){
                   return messageArray;
              } 
         }
     }
 else
         return null
  

;

Комментарии:

1. отлично! Я уже решал ее с помощью instanceof раньше, но ваш способ намного лучше