JSON解析问题-如何在一个代码中同时处理JSONArray和JSONObject

问题描述

|| 我有一段代码需要同时处理JSONObject和JSONArray(它可能会返回两者)。当我收到一个对象而不是一个数组时,它引发了一个异常。一种解决方案是检查第一个字符是否为{或[,但是我希望有一个更好的字符。
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;
    

解决方法

        
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
;