Intereting Posts
Пакет org.apache.http.client не существует Повторное использование стандартного атрибута android в моем пользовательском представлении Зафиксируйте ориентацию до окончания работы Asynctask Файл открытия ошибки: нет такого файла или каталога (2) Давайте разрешим «Ошибка поиска стиля« mapViewstyle »в текущей теме» Каков правильный способ вставки / обновления / удаления в Android SQLiteDatabase с использованием строки запроса? Android Deep linking: используйте ту же ссылку для приложения и магазина воспроизведения CircleCi не может не разрешить инструменты сборки Android Android Как прослушивать события кнопки громкости? Закрыт сервер АОallback: прекращение обратных вызовов Как получить день месяца? Android – словарь. Что быстрее, база данных или файл для чтения напрямую? Можно ли создать приложение Android с помощью PhoneGap строго внутри Visual Studio? Как получить данные из службы в действие Любое преимущество программирования для мобильной разработки?

Как проверить, существует ли ключ json?

Итак, я получаю некоторые значения JSON с сервера, но я не знаю, будет ли это конкретное поле или нет.

Так вот:

{ "regatta_name":"ProbaRegatta", "country":"Congo", "status":"invited" } 

И иногда, будет дополнительное поле, такое как:

 { "regatta_name":"ProbaRegatta", "country":"Congo", "status":"invited", "club":"somevalue" } 

Я хотел бы проверить, существует ли поле с названием «club», так что при разборе я не получу org.json.JSONException: нет значения для клуба

Solutions Collecting From Web of "Как проверить, существует ли ключ json?"

Класс JSONObject имеет метод с именем «имеет»:

http://developer.android.com/reference/org/json/JSONObject.html#has(java.lang.String)

Возвращает true, если этот объект имеет сопоставление для имени. Отображение может быть NULL.

Вы можете проверить этот путь, где «HAS» – возвращает true, если этот объект имеет сопоставление для имени. Отображение может быть NULL.

  if (json.has("status")) { String status = json.getString("status")); } if (json.has("club")) { String club = json.getString("club")); } 

Вы также можете проверить с помощью 'isNull' – возвращает значение true, если этот объект не имеет сопоставления для имени или имеет отображение, значение которого равно NULL.

  if (!json.isNull("club")) String club = json.getString("club")); 

Вы можете использовать JSONObject#has , предоставляя key качестве ввода и проверяя, вернёт ли метод true или false . Вы также можете

Используйте optString вместо getString :

Возвращает значение, отображаемое по имени, если оно существует, при необходимости принудительное. Возвращает пустую строку, если такое отображение не существует

Перед тем, как прочитать ключ, проверьте его, как перед чтением

 JSONObject json_obj=new JSONObject(yourjsonstr); if(json_obj.isNull("club")) { //it's contain value to be read operation } else { //it's not contain key club or isnull so do this operation here } 

IsNull определение функции

 Returns true if this object has no mapping for name or if it has a mapping whose value is NULL. 

Официальная документация по ссылке для функции isNull

http://developer.android.com/reference/org/json/JSONObject.html#isNull(java.lang.String)

Попробуй это

 if(!jsonObj.isNull("club")){ jsonObj.getString("club"); } 

Вы можете использовать

 public boolean has(String key) 

Определите, содержит ли JSONObject конкретный ключ .

пример

 JSONObject JsonObj = new JSONObject(Your_API_STRING); //JSONObject is an unordered collection of name/value pairs if (JsonObj.has("address")) { //Checking address Key Present or not String get_address = JsonObj .getString("address"); // Present Key } else { //Do Your Staff }