Хотя вышеупомянутые решения должны работать в 90% случаев, но если вы все еще читаете этот ответ !!! Вероятно, вы пытаетесь подключиться к другому серверу, чем предполагалось. Возможно, это связано с конфигурационным файлом, указывающим на другой сервер SQL, чем фактический сервер, с которым вы пытаетесь подключиться.
Произошло со мной по крайней мере.
Класс JSONObject имеет метод с именем «has»:
http://developer.android.com/reference/org/json/JSONObject.html#has (java.lang.String )
Возвращает true, если этот объект имеет сопоставление для имени. Отображение может быть NULL.
blockquote>
вы могли бы JSONObject#has
, предоставив вход key
и проверить, возвращает ли метод true
или false
. Вы также можете
использовать optString
вместо getString
:
Возвращает значение, отображаемое по имени, если оно существует, при необходимости принудительное. Возвращает пустую строку, если такое отображение не существует
blockquote>
getString
вернет пустую строку, optString
также вернет пустую строку. Предположим, что вы считаете, что свойство не доступно в ситуации ОП.
– halfpastfour.am
16 August 2014 в 19:56
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;
работает во всех текущих браузерах.
Лучше, вместо использования условного типа:
if (json.has("club")) {
String club = json.getString("club"));
}
- просто использовать существующий метод optString (), например:
String club = json.optString("club);
optString («ключ») возвращает пустую строку, если ключ не существует, и поэтому не будет генерировать исключение.
Я просто добавляю еще одну вещь. Если вы просто хотите проверить, создано ли что-либо в JSONObject или нет, вы можете использовать length (), потому что по умолчанию, когда JSONObject инициализирован и ключ не вставлен, он просто имеет пустые фигурные скобки {}
и использование has (String key) не имеет никакого смысла.
Итак, вы можете напрямую писать if (jsonObject.length() > 0)
и делать свои вещи.
Счастливое обучение!
Попробуйте
if(!jsonObj.isNull("club")){
jsonObj.getString("club");
}
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.
blockquote>if (!json.isNull("club")) String club = json.getString("club"));
как раз перед тем, как ключ чтения проверяет его как перед чтением
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)
Integer
? – Eido95 15 May 2017 в 19:33Integer
в качестве ключа, звучит как плохая практика. JSON должен быть со строковым ключом и значением того, что вам нужно. – Nico 24 July 2017 в 11:11