Как проверить, является ли ответ от сервера JSONAobject или JSONArray?

Возможный дубликат:
Определите, является ли JSON JSONObject или JSONArray

У меня есть сервер, который по умолчанию возвращает JSONArray, но когда возникает некоторая ошибка, он возвращает мне JSONObject с кодом ошибки. Я пытаюсь разобрать json и проверить на наличие ошибок, у меня есть часть кода, которая проверяет наличие ошибки:

public static boolean checkForError(String jsonResponse) { boolean status = false; try { JSONObject json = new JSONObject(jsonResponse); if (json instanceof JSONObject) { if(json.has("code")){ int code = json.optInt("code"); if(code==99){ status = true; } } } } catch (Exception e) { e.printStackTrace(); } return status ; } 

Но я получаю JSONException, когда jsonResponse в порядке, и это JSONArray (JSONArray не может быть преобразован в JSONOBject). Как проверить, предоставит ли jsonResponse мне JSONArray или JSONObject?

Используйте JSONTokener . JSONTokener.nextValue() предоставит вам Object который может быть динамически добавлен к соответствующему типу в зависимости от экземпляра.

 Object json = new JSONTokener(jsonResponse).nextValue(); if(json instanceof JSONObject){ JSONObject jsonObject = (JSONObject)json; //further actions on jsonObjects //... }else if (json instanceof JSONArray){ JSONArray jsonArray = (JSONArray)json; //further actions on jsonArray //... } 

Вы пытаетесь преобразовать ответ String, полученный с сервера в JSONObject который вызывает исключение. Как вы сказали, вы получите JSONArray с сервера, вы пытаетесь преобразовать его в JSONArray . Пожалуйста, обратитесь к этой ссылке, которая поможет вам при преобразовании строкового ответа в JSONObject и JSONArray . Если ваш ответ начинается с [(Open Square Bracket), то преобразуйте его в JsonArray, как показано ниже

 JSONArray ja = new JSONArray(jsonResponse); 

Если ваш ответ начинается с {(open flower Bracket), то преобразуйте его в

 JSONObject jo = new JSONObject(jsonResponse); 
Intereting Posts
Активность перезапускается, когда экран вращается Импорт нескольких проектов и отдельных проектов в Android Studio Просмотры возвращает NullPointerException в onBindViewHolder в адаптере RecyclerView Почему Android не может иметь дело с конфликтом имен ресурсов между Project и Library? Невозможно разрешить ошибку символа для ссылки на XML для рисования в Android Studio на Mac Представляемые решения для тестирования приложений для Android Состояние экземпляра восстановления android для фрагмента, который находится в задней части Значение одного знака плюс в массиве Не получать сообщение с сервера GCM Продукт Android-версии версииNameSuffix Разница между услугами и широковещательными приемниками Не удается запустить панель действий Android 4.0 Split Action Как отобразить фракции в андроиде? Spinner в диалоговом окне – NullPointerException Задание таймера VS Использование диспетчера Alarm Manager в службе Android