Подтвердить что ты не робот

Элемент проверки JSON Java - это JSONArray или JSONObject

Как проверить, является ли элемент JSONArray или JSONObject. Я написал код для проверки,

if(jsonObject.getJSONObject("Category").getClass().isArray()) {

} else {

}

В этом случае, если элемент 'category' является JSONObject, то он работает нормально, но если он содержит массив, то он генерирует исключение: JSONArray не может быть преобразован в JSONObject. Пожалуйста помоги. Спасибо.

4b9b3361

Ответ 1

Да, это потому, что getJSONObject("category") попытается преобразовать этот String в JSONObject то, что будет бросать JSONException. Вы должны сделать следующее:

Проверьте, является ли этот объект JSONObject, используя:

   JSONObject category=jsonObject.optJSONObject("Category");

который вернет JSONObject или null, если объект category не является объектом json. Затем вы делаете следующее:

   JSONArray categories;
   if(category == null)
        categories=jsonObject.optJSONArray("Category");

который вернет ваш JSONArray или null, если он недействителен JSONArray.

Ответ 2

Даже если у вас есть свой ответ, но все же он может помочь другим пользователям...

 if (Law.get("LawSet") instanceof JSONObject)
 {
    JSONObject Lawset = Law.getJSONObject("LawSet");                        
 }
 else if (Law.get("LawSet") instanceof JSONArray)
{
    JSONArray Lawset = Law.getJSONArray("LawSet");
}

Здесь Law есть другой JSONObject, а LawSet - это ключ, который вы хотите найти как JSONObject or JSONArray.

Ответ 4

Вы можете использовать instanceof, чтобы проверить тип получаемого результата. Тогда вы можете справиться с этим, как хотите.

Ответ 5

           if (element instanceof JSONObject) {

                Map<String, Object> map = json2Java.getMap(element
                        .toString());
                if (logger.isDebugEnabled()) {
                    logger.debug("Key=" + key + " JSONObject, Values="
                            + element);
                }
                for (Entry<String, Object> entry : map.entrySet()) {
                    if (logger.isDebugEnabled()) {
                        logger.debug(entry.getKey() + "/"
                                + entry.getValue());
                    }
                    jsonMap.put(entry.getKey(), entry.getValue());
                }
            }