programing

JSONObject가 null인지 존재하지 않는지 테스트하는 방법

skycolor 2023. 3. 28. 21:30
반응형

JSONObject가 null인지 존재하지 않는지 테스트하는 방법

나는 한 세트를 가지고 있다.JSONObject서버로부터 수신해, 조작하는 값.대부분의 경우, 나는JSONObject값(예를 들어 통계)이 포함되어 있으며 경우에 따라서는 값이 반환됩니다.Error오브젝트에 코드와 오류 설명을 입력합니다.

에러가 반환되어도 끊어지지 않도록 코드를 구조화하려면 어떻게 해야 합니까?할 수 있을 줄 알았는데 안 되네.

public void processResult(JSONObject result) {
    try {
        if(result.getJSONObject(ERROR) != null ){
            JSONObject error = result.getJSONObject(ERROR);
            String error_detail = error.getString(DESCRIPTION);
            if(!error_detail.equals(null)) {
                //show error login here
            }
            finish();
        }
        else {
            JSONObject info = result.getJSONObject(STATISTICS);
            String stats = info.getString("production Stats"));
        }
    }
}

사용하다.has(String)그리고..isNull(String)

보수적인 사용법은 다음과 같습니다.

    if (record.has("my_object_name") && !record.isNull("my_object_name")) {
        // Do something with object.
      }

조금 늦을지도 모르지만(확실히) 나중에 독자를 위해 게시합니다.

예외 없이 사용할 수 있으며

이름이 있고 JSONObject이면 이름으로 매핑된 값을 반환하고 그렇지 않으면 null을 반환합니다.

할 수 있도록

JSONObject obj = null;
if( (obj = result.optJSONObject("ERROR"))!=null ){
      // it's an error , now you can fetch the error object values from obj
}

또는 값을 가져오지 않고 Null만 테스트하는 경우

if( result.optJSONObject("ERROR")!=null ){
    // error object found 
}

모든 옵션 기능 패밀리가 반환됩니다.null또는 오버로드된 버전을 사용하여 미리 정의된 값을 반환할 수도 있습니다.

String optString (String name, String fallback)

이름별로 매핑된 값이 있으면 반환하고 필요한 경우 강제로 반환하거나 매핑이 없는 경우 폴백을 반환합니다.

어디에coercing즉, 값을 String 타입으로 변환하려고 합니다.


다중 검색을 배제하기 위해 @TheMonkeyMan 응답 수정 버전

public void processResult(JSONObject result) {
    JSONObject obj = null;
    if( (obj = result.optJSONObject("ERROR"))!=null ){
       //^^^^ either assign null or jsonobject to obj
      //  if not null then  found error object  , execute if body                              
        String error_detail = obj.optString("DESCRIPTION","Something went wrong");
        //either show error message from server or default string as "Something went wrong"
        finish(); // kill the current activity 
    }
    else if( (obj = result.optJSONObject("STATISTICS"))!=null ){
        String stats = obj.optString("Production Stats");
        //Do something
    }
    else
    {
        throw new Exception("Could not parse JSON Object!");
    }
}

JSONObject에는 키를 결정하는 'Has' 메서드가 있습니다.

이것이 효과가 있을지는 모르겠지만 믿을만해 보인다.

public void processResult(JSONObject result) {

    if(result.has("ERROR"))
    {
        JSONObject error = result.getJSONObject("ERROR")
        String error_detail = error.getString("DESCRIPTION");

        if(error_detail != null)
        {
            //Show Error Login
            finish();
        }
    }
    else if(result.has("STATISTICS"))
    {
        JSONObject info = result.getJSONObject("STATISTICS");
        String stats = info.getString("Production Stats");

        //Do something
    }
    else
    {
        throw new Exception("Could not parse JSON Object!");
    }
}

Java의 Null 값을 사용하는 것보다 NULL 개체를 갖는 것이 더 편리하고 덜 모호할 수 있습니다.

  • JSONObject.NULL.equals(null)는 true를 반환합니다.

    JSONObject.NULL.toString()은 "null"을 반환합니다.

예:

System.out.println ( test . get ( " address " ) . equals ( null ) ; // 기본 설정 방법 System . out . println ( test . get String ( " address ) . equals ( " null ) ) ;

source -- JSONObject oracle docs

주의사항:

EE8 json 사양으로 예외적으로 안전한 다음을 얻을 수 있습니다.

result.asJsonObject().getString("ERROR", null);

단, 체크하고 싶은 경우 다음 방법으로 체크할 수 있습니다.

result.asJsonObject().get("ERROR").equals(JsonValue.NULL)

만약 당신 코드의 어느 한 번이라도org.json.JSONObject json_object된다null그리고 당신은 피하고 싶다.NullPointerException(102.1984).특수한 포인터예외)를 선택하면 다음과 같이 체크합니다.

if(json_object == null) {
   System.out.println("json_object is found as null");
  }
  else {
       System.out.println("json_object is found as not null");
  }

어떤 경우든 json 객체는 null입니다.그런 다음 이 문을 사용하여 jsonobject가 null인지 여부를 확인합니다.

if (!obj.get("data").isJsonNull()){
   //Not Null
}else{
   //Null
}

또한 json 객체의 존재 여부를 확인하려면 .has를 사용합니다.

if (!obj.has("data")){
   //Not Exist
}else{
   //Exist
}

언급URL : https://stackoverflow.com/questions/12585492/how-to-test-if-a-jsonobject-is-null-or-doesnt-exist

반응형