programing

JSON 키가 존재하는지 확인하는 방법

copyandpastes 2023. 2. 1. 22:22
반응형

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

반응형