Проверьте, является ли JSONArray фактически целым числом логического массива

#java #json

#java #json

Вопрос:

Можно ли проверить, является ли JSONArray на самом деле логическим или целочисленным массивом. Я часами искал в Интернете, но ничего не могу найти. Спасибо.

Ответ №1:

Вам просто нужно использовать instanceof для первого элемента:

     JSONObject o = new JSONObject("{ "a1": [ false, true, false, true ], "a2": [1,2,3,4] }");
    JSONArray a1 = o.getJSONArray("a1");
    JSONArray a2 = o.getJSONArray("a2");
    if (a1.length() > 0) {
        if (a1.get(0) instanceof Boolean) {
            System.out.println("a1 is Boolean array");
        } else if (a1.get(0) instanceof Integer) {
            System.out.println("a1 is Integer array");
        } else {
            System.out.println("a1 is some other type");
        }
    }
    if (a2.length() > 0) {
        if (a2.get(0) instanceof Boolean) {
            System.out.println("a2 is Boolean array");
        } else if (a2.get(0) instanceof Integer) {
            System.out.println("a2 is Integer array");
        } else {
            System.out.println("a2 is some other type");
        }
    }
  

Ответ №2:

Если вы используете JSONArray from org.json package, вы можете сделать 2 вещи.
1) вы можете использовать optBoolean optInt методы or, которые возвращают true, если значение является логическим или int соответственно, как говорится в документе here
2) вы можете получить значение JSONArray в Object и проверить его экземпляр по ключевому слову instanceOf, а затем использовать соответствующим образом.