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

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

Итак, как:

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

И иногда появляется дополнительное поле типа:

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

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

Ответ 2

Вы можете проверить этот путь, где '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"));

Ответ 3

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

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

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

Ответ 4

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

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
}

Ответ 5

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

JSONObject json_obj=new JSONObject(yourjsonstr);
if(!json_obj.isNull("club"))
{
  //it contain value to be read operation
}
else
{
  //it 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)

Ответ 6

Попробуйте это

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

Ответ 7

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

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

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

String club = json.optString("club);

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

Ответ 8

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;

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

Ответ 9

Попробуйте это:

let json=yourJson

if(json.hasOwnProperty(yourKey)){
    value=json[yourKey]
}

Ответ 10

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

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

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

Ответ 11

Вы можете попробовать это, чтобы проверить, существует ключ или нет:

JSONObject object = new JSONObject(jsonfile);
if (object.containskey("key")) {
  object.get("key");
  //etc. etc.
}

Ответ 12

У Json есть метод, который называется containsKey().

Вы можете использовать его, чтобы проверить, содержится ли определенный ключ в наборе Json.

File jsonInputFile = new File("jsonFile.json"); 
InputStream is = new FileInputStream(jsonInputFile);
JsonReader reader = Json.createReader(is);
JsonObject frameObj = reader.readObject();
reader.close();

if frameObj.containsKey("person") {
      //Do stuff
}