따라서 서버에서 일부 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
메소드가 리턴하는 경우 입력 및 확인으로 true
나 false
. 당신은 또한 할 수 있습니다
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”) 메소드는 빈 문자열을 리턴하므로 예외가 발생하지 않습니다.