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
메소드가 리턴하는 경우 입력 및 확인으로 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);
the optString("key") method will return an empty String if the key does not exist and won't, therefore, throw you an exception.
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;
works in all current browsers.
Try this:
let json=yourJson
if(json.hasOwnProperty(yourKey)){
value=json[yourKey]
}
I am just adding another thing, In case you just want to check whether anything is created in JSONObject or not you can use length(), because by default when JSONObject is initialized and no key is inserted, it just has empty braces {}
and using has(String key) doesn't make any sense.
So you can directly write if (jsonObject.length() > 0)
and do your things.
Happy learning!
You can try this to check wether the key exists or not:
JSONObject object = new JSONObject(jsonfile);
if (object.containskey("key")) {
object.get("key");
//etc. etc.
}
Json has a method called containsKey()
.
You can use it to check if a certain key is contained in the Json set.
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
}
참고URL : https://stackoverflow.com/questions/17487205/how-to-check-if-a-json-key-exists
'IT' 카테고리의 다른 글
Objective-C에서 NSString의 대소 문자를 대문자로 바꾸거나 변경 (0) | 2020.06.22 |
---|---|
하나의 케이스 레이블에서 제어 할 수 없습니다 (0) | 2020.06.22 |
Eclipse IDE에서 인터페이스 구현으로 이동 (0) | 2020.06.22 |
설치하는 동안 Visual Studio 2015 설치 관리자가 중단됩니까? (0) | 2020.06.22 |
안드로이드와 텍스트 센터를 정렬 (0) | 2020.06.22 |