JSON parsing 하실 때 null이거나 존재하지 않는 없는 필드를 읽으실 때는 주의 하셔야 해요.
https://developer.android.com/reference/org/json/JSONObject
해당 API문서를 다 확인해 보시구요. 어떻게 JSONObject이 파싱을 하는지 말해주기 때문에 아시고 사용하시라고 권장드립니다.
핵심은 서버 응답에 값이 무조건 와야 하는 필드는 getString, getInteger, getFloat, getDouble과 같은 getType()메소드를 사용해서 처리하지만, 그렇지 않고 값이 있을 수도 있고 없을 수도 있는 optional 필드의 경우는 optType(), 즉 optString, optInteger, optFloat, optDouble 같은 메소드를 이용해서 처리하셔야 해요. getType메소드는
if no such mapping exists throws JSONException
매핑을 할 수 없을 경우 JSONException을 던지도록 되어 있습니다. 반면 optType메소드는 Exception 던지지 않아요. 따라서 getType을 사용하시려면 Exception 처리에 좀 더 신경을 쓰셔야 겠죠. getJSONArray대신에 optJSONArray를 쓰실 수 있구요.