본문 바로가기
개발/안드로이드

[안드로이드] json 파싱시 값이 null 또는 데이터가 없을 때 | 버그리포트

by 핸디(Handy) 2020. 3. 16.

버그 사항 : json item의 value가 없다? -> JSONException 발생

수정 : item.getString 을 item.optString 으로 바꾼다.

json 파싱을 한참 하다가 특정 item에는 값이 빠져있는 경우가 있습니다.

바로 아래와 같은 경우죠.

무림약국과 미래온누리약국을 비교해보면, 

무림약국은 일반적인 json item과 다르게 remain_stat과 stock_at이 없는 상태입니다.

그 결과 파싱을 진행하다보면

org.json.JSONException: No value for remain_stat~~

org.json.JSONException: No value for stock_at~~ 이 나오게 되면 파싱은 중간에 끊기게 됩니다.

이럴 경우 item.getString 보다는 item.optString을 통해서 값을 받아와주시면 됩니다.

                            item.getString("lat"),
                            item.getString("lng"),
                            item.getString("addr"),
                            item.getString("code"),
                            item.getString("created_at"),
                            item.getString("name"),
                            item.optString("remain_stat","no value"),
                            item.optString("stock_at","no value"),
                            item.getString("type")

여기서 item.optString( string1 , string2 ) 에 설명하자면

string1으로 name을 조회했을때 없다면 string2로 값을 넣겠다 라는 의미입니다.

결국 해당 item은 no value 라는 초기값을 가짐으로써 org.json.JSONException 를 피할 수 있게 됩니다.

댓글