Как проверить, является ли объект JSON пустым в Java? - PullRequest
6 голосов
/ 21 января 2012

В Java, если в качестве примера использовать следующую строку JSON, как бы я проверил, являются ли объекты пустыми / пустыми ?

{"null_object_1" : [], "null_object_2" : [null] }

Iпытался использовать:

if(!jsonSource.isNull("null_object_1"))  {/*null_object_1 is not empty/null*/}
if(!jsonSource.isNull("null_object_2"))  {/*null_object_2 is not empty/null*/}

Но эти операторы IF по-прежнему возвращают true (как если бы они не были пустыми / нулевыми).

У кого-нибудь есть решение?

Редактировать: Под "объектом" я на самом деле имел в виду array.

Ответы [ 2 ]

12 голосов
/ 21 января 2012

Ни одна из этих двух вещей null; они массивы. Результат именно то, что вы ожидаете.

Один из ваших массивов пуст, другой содержит один элемент null.

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

JSONObject myJsonObject = 
    new JSONObject("{\"null_object_1\":[],\"null_object_2\":[null]}");

if (myJsonObject.getJSONArray("null_object_1").length() == 0) {
    ... 
}

Изменить, чтобы уточнить: Массив без элементов (пустой) и массив с элементом, равным null, представляют собой совершенно разные вещи . В случае вашего второго массива он не является ни null, ни пустым. Как я уже говорил, это массив, который имеет единственный элемент null. Если вам интересно определить, так ли это, вам нужно получить массив, а затем пройтись по нему, проверяя каждый элемент, чтобы определить, является ли он null, и соответствующим образом воздействовать на результаты.

2 голосов
/ 21 января 2012

Согласно этой документации JSONObject API , isNull проверяет значение NULL, что в вашем случае неверно.

Если значением 'null_object_1' является String, вам нужно использовать String temp = getString("keyName") и поставить отметку

!("".equals(temp));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...