我有一段代码需要同时处理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


;

关于android - JSON解析问题-如何在一段代码中同时处理JSONArray和JSONObject,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6335325/

10-08 22:54