Итак, я получаю некоторые значения JSON с сервера, но я не знаю, будет ли определенное поле или нет.
Так вроде:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}
И иногда, будет дополнительное поле, подобное:
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"club":"somevalue"
}
Я хотел бы проверить, существует ли поле с именем "club", чтобы при разборе я не получал org.json.JSONException: значение для club
Ответы:
У класса JSONObject есть метод с именем "has":
http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)
источник
Integer
типа?Integer
в качестве ключа звучит как плохая практика. JSON должен быть с ключом String и значением того, что вам нужно.Вы можете проверить этот путь, где 'HAS' - возвращает true, если у этого объекта есть сопоставление имени. Отображение может быть NULL.
источник
Вы можете
JSONObject#has
, предоставивkey
входные данные как и проверить, возвращает ли методtrue
илиfalse
. Вы могли бы такжеиспользуйте
optString
вместоgetString
:источник
getString
бы вернул пустую строку,optString
также вернул бы пустую строку. Предположение тогда заставит вас поверить, что собственность не доступна в ситуации OP.как раз перед прочтением ключа проверьте его как перед прочтением
Определение функции isNull
официальная документация по ссылке ниже для
isNull
функцииhttp://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)
источник
Ты можешь использовать
has
Определите, содержит ли JSONObject определенный ключ .
пример
источник
Попробуй это
источник
isNull
на самом деле для проверки, является ли отображение пустым, а не для проверки доступности члена json.Лучший способ, вместо использования условного типа:
это просто использовать существующий метод optString (), например:
метод optString ("key") вернет пустую строку, если ключ не существует и, следовательно, не выдаст вам исключение.
источник
У Джсона есть метод, который называется
containsKey()
.Вы можете использовать его, чтобы проверить, содержится ли определенный ключ в наборе Json.
источник
работает во всех текущих браузерах.
источник
Попробуй это:
источник
Вы можете попробовать это проверить, существует ли ключ или нет:
источник
Я просто добавив еще одну вещь, в случае , если вы просто хотите проверить, создается ли что - нибудь в JSONObject или вы не можете использовать длину (), так как по умолчанию при JSONObject инициализации и ключ не вставлен, он просто имеет пустые скобки
{}
и использование имеет (Строковый ключ) не имеет никакого смысла.Таким образом, вы можете напрямую писать
if (jsonObject.length() > 0)
и делать свои вещи.Счастливого обучения!
источник
Вы можете использовать JsonNode # hasNonNull (String fieldName) , он смешивает метод has и проверку, если это нулевое значение или нет
источник