JSON 키가 존재하는지 확인하는 방법
서버로부터 몇 가지 JSON 값을 취득했습니다만, 특정의 필드가 표시되는지는 알 수 없습니다.
예를 들어 다음과 같습니다.
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited"
}
또한 다음과 같은 추가 필드가 있을 수 있습니다.
{ "regatta_name":"ProbaRegatta",
"country":"Congo",
"status":"invited",
"club":"somevalue"
}
club이라는 이름의 필드가 존재하는지 확인하고 싶기 때문에 해석 시 얻을 수 없습니다.
org.json.JSONException:클럽 값 없음
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
:
이름별로 매핑된 값이 있으면 반환하고 필요한 경우 강제로 반환합니다.매핑이 없는 경우 빈 문자열을 반환합니다.
읽기 직전에 읽기 전과 같이 키를 체크합니다.
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
}
is Null 함수 정의
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)
사용할 수 있습니다.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
}
다음과 같은 조건을 사용하는 대신 더 나은 방법을 사용할 수 있습니다.
if (json.has("club")) {
String club = json.getString("club"));
}
기존 메서드 optString()을 사용하면 다음과 같이 됩니다.
String club = json.optString("club);
optString("key") 메서드는 키가 존재하지 않는 경우 빈 문자열을 반환하므로 예외가 발생합니다.
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
}
이것을 시험해 보세요.
let json=yourJson
if(json.hasOwnProperty(yourKey)){
value=json[yourKey]
}
이거 드셔보세요
if(!jsonObj.isNull("club")){
jsonObj.getString("club");
}
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;
는 현재 모든 브라우저에서 작동합니다.
키의 존재 여부를 확인하려면 , 다음의 순서를 실행할 수 있습니다.
JSONObject object = new JSONObject(jsonfile);
if (object.containskey("key")) {
object.get("key");
//etc. etc.
}
또 하나 추가하겠습니다.JSONObject에 작성되어 있는지 확인하고 싶은 경우 length()를 사용할 수 있습니다.이는 기본적으로 JSONObject가 초기화되어 키가 삽입되지 않았을 때 빈 괄호만 있기 때문입니다.{}
Has(String Key)를 사용하는 것은 의미가 없습니다.
직접 쓰실 수 있습니다.if (jsonObject.length() > 0)
네 일을 할 수 있어
행복한 배움!
JsonNode#hasNonNull(String fieldName)을 사용할 수 있습니다.이러한 값은 늘 값인지 아닌지에 관계없이has 메서드와 검증을 혼재시킵니다.
언급URL : https://stackoverflow.com/questions/17487205/how-to-check-if-a-json-key-exists
'programing' 카테고리의 다른 글
PHP의 HTTP_HOST와 SERVER_NAME의 차이점은 무엇입니까? (0) | 2023.02.01 |
---|---|
인스턴스의 클래스 이름 가져오기 (0) | 2023.02.01 |
여러 축에서 시계열 데이터를 집계하고 있습니까? (0) | 2023.02.01 |
MariaDB Server vs MariaDB Galera 클러스터 HA 리플리케이션 (0) | 2023.02.01 |
액티비티는?finish()는 Android에서 작동합니까? (0) | 2023.02.01 |