JSON 키가 있는지 확인하는 방법? 여부는 알 수

따라서 서버에서 일부 JSON 값을 얻지 만 특정 필드가 있는지 여부는 알 수 없습니다.

그처럼:

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

때로는 다음과 같은 추가 필드가 있습니다.

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

구문 분석시 org.json.JSONException을 얻지 않도록 “club”이라는 필드가 있는지 확인하고 싶습니다 .



답변

JSONObject 클래스에는 “has”라는 메소드가 있습니다.

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’을 사용하여 확인할 수도 있습니다.이 오브젝트에 이름에 대한 맵핑이 없거나 값이 NULL 인 맵핑이있는 경우 true를 리턴합니다.

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


답변

당신은 수 JSONObject#has의를 제공하는 key메소드가 리턴하는 경우 입력 및 확인으로 truefalse. 당신은 또한 할 수 있습니다

optString대신에 사용하십시오 getString:

존재하는 경우 이름으로 매핑 된 값을 반환하고 필요한 경우 강제로 반환합니다. 그러한 매핑이 존재하지 않으면 빈 문자열을 반환


답변

당신이 사용할 수있는 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
}


답변

키를 읽기 직전에 읽기 전에 확인하십시오.

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");
}


답변

다음과 같은 조건을 사용하는 대신 더 좋은 방법입니다.

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

다음과 같이 기존 메소드 optString ()을 사용하는 것입니다.

String club = json.optString("club);

키가 존재하지 않고 optString ( “key”) 메소드는 빈 문자열을 리턴하므로 예외가 발생하지 않습니다.