Строка Jsonarray в android [дубликат]

Хотя вышеупомянутые решения должны работать в 90% случаев, но если вы все еще читаете этот ответ !!! Вероятно, вы пытаетесь подключиться к другому серверу, чем предполагалось. Возможно, это связано с конфигурационным файлом, указывающим на другой сервер SQL, чем фактический сервер, с которым вы пытаетесь подключиться.

Произошло со мной по крайней мере.

105
задан JonyD 7 February 2017 в 13:55
поделиться

9 ответов

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

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

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

192
ответ дан PX Developer 18 August 2018 в 14:39
поделиться
  • 1
    потому что "содержит" слишком банально? :) – Omri374 5 April 2016 в 19:03
  • 2
    Что делать, если ключ из типа Integer? – Eido95 15 May 2017 в 19:33
  • 3
    @ Eido95, имеющий Integer в качестве ключа, звучит как плохая практика. JSON должен быть со строковым ключом и значением того, что вам нужно. – Nico 24 July 2017 в 11:11
  • 4
    @ Eido95, я считаю, что для целого числа всегда есть значение, каждый раз, когда вы объявляете целое число, вы должны инициализировать его значением. – mut tony 9 February 2018 в 19:54

вы могли бы JSONObject#has, предоставив вход key и проверить, возвращает ли метод true или false. Вы также можете

использовать optString вместо getString:

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

11
ответ дан Blackbelt 18 August 2018 в 14:39
поделиться
  • 1
    Хотя этот метод может быть полезен другим, это значение не возвращается, если значение существует. Если getString вернет пустую строку, optString также вернет пустую строку. Предположим, что вы считаете, что свойство не доступно в ситуации ОП. – halfpastfour.am 16 August 2014 в 19:56
  • 2
    @Blackbelt у вас есть источники для этого? – tsuz 6 October 2016 в 18:37
I used hasOwnProperty('club')

var myobj = { "regatta_name":"ProbaRegatta",
    "country":"Congo",
    "status":"invited"
 };

 if ( myobj.hasOwnProperty("club"))
     // do something with club (will be false with above data)
     var data = myobj.club;
 if ( myobj.hasOwnProperty("status"))
     // do something with the status field. (will be true with above ..)
     var data = myobj.status;

работает во всех текущих браузерах.

0
ответ дан cdturner 18 August 2018 в 14:39
поделиться

Лучше, вместо использования условного типа:

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

- просто использовать существующий метод optString (), например:

String club = json.optString("club);

optString («ключ») возвращает пустую строку, если ключ не существует, и поэтому не будет генерировать исключение.

2
ответ дан fuzzKitty 18 August 2018 в 14:39
поделиться

Я просто добавляю еще одну вещь. Если вы просто хотите проверить, создано ли что-либо в JSONObject или нет, вы можете использовать length (), потому что по умолчанию, когда JSONObject инициализирован и ключ не вставлен, он просто имеет пустые фигурные скобки {} и использование has (String key) не имеет никакого смысла.

Итак, вы можете напрямую писать if (jsonObject.length() > 0) и делать свои вещи.

Счастливое обучение!

0
ответ дан Gurinder 18 August 2018 в 14:39
поделиться
8
ответ дан IntelliJ Amiya 18 August 2018 в 14:39
поделиться

Попробуйте

if(!jsonObj.isNull("club")){
    jsonObj.getString("club");
}
2
ответ дан R9J 18 August 2018 в 14:39
поделиться
  • 1
    isNull на самом деле проверяет, является ли отображение нулевым, а не для проверки доступности члена json. – Reza_Rg 22 July 2015 в 05:09

Вы можете проверить этот путь, где «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"));
116
ответ дан Reaz Murshed 18 August 2018 в 14:39
поделиться
  • 1
    какой json lib вы используете, можете ли вы представить простой пример для json-smart или json-simple – samuel owino 11 September 2017 в 09:39

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

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

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

6
ответ дан Stack Overflow User 18 August 2018 в 14:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: