개발/Java

[java] JSON null check

승리승리 2021. 6. 13. 16:41

#목적

   1. JSON Data를 파싱해서 사용하는데 특정 필드의 값이 Null이 아니라고 통과되고는 Null Potinter Exception이 발생

 

#내용

   1. 삽입되는 JSON Data 예시

JSON Data 예시

   1. 기존 로직 및 문제점
      a. 기존 Json Null Check Logic

String ksr = "";
JsonObject successObj = (JsonObject) jsonObject.get("success");

if(successObj.get("ksr") != null) {
	ksr = successObj.get("ksr").getAsString();
}

위 Logic에서 if문의 null check는 통과한다.
하지만 get("ksr") 이후 getAsString(); 에서 Null Potinter Exception이 발생한다.
나는 get("ksr")로 ksr이라는 변수에 담긴 값을 체크한다고 생각하였다.
하지만 ksr를 키로 가지는 변수가 존재하면 해당 if문은 null이 아니기에 통과가 되며
ksr이라는 변수에 담긴 null에 getAsString()을 시도하기에 오류가 발생하게 된다.
위 로직은 JSON Data에 "ksr"이라는 key값이 존재하지 않는 경우만을 체크하게 된다.

      b. 수정된 JSON Null Check Logic

if(successObj.get("ksr") != null && !successObj.get("ksr").isJsonNull()) {
	ksr = successObj.get("ksr").getAsString();
}

위 로직을 통해 "ksr"을 key값으로 가지는 필드의 값 까지 Null Check를 수행하게 된다.

 

#배운점
   1. 너무 안일하게 생각하고 로직을 구현하여 생긴문제다.
이전에 작업한 모든 JSON Null Check는 기존 로직으로 구현되어 있을텐데... 후...
월요일에 다 수정해서 배포해야하는데... 하...