안드로이드 앱 개발기 #13 - Retrofit2 활용 서버로부터 받을 데이터 유형 JsonElement (JSONObject 사용 불가)

Retrofit2 활용하여 서버로부터 받을 JSON 자료의 유형은 데이터 클래스로 정의할 수 있습니다. 그런데 클래스를 정의하지 않고도 JsonElement 클래스를 활용해도 됩니다.


클래스 정의 대신 JsonElement 클래스 사용이 나은 경우

서버로부터 받을 JSON 자료의 구조가 복잡한 반면, 앱은 그것의 일부분만 사용하면 되는 경우가 있습니다. 이 경우에 데이터 클래스를 정의하는 것보다 JsonElement 클래스를 사용하는 것이 더 나을 수 있습니다.


주의 - JSONObject 클래스는 사용 불가

OkHttp 또는 Volley 라이브러리로 서버 연동 했을 때에는 받을 자료의 유형을 JSONObject 클래스로 정할 수 있었습니다. 그래서 Retrofit2로도 그게 가능할 거라고 당연히 가정했었습니다. 서버 연동 구현 후 문제는... 서버 연결은 문제가 없는데 받은 자료는 비어 있었다는 것입니다. 처음에는 URL이 잘못된줄 알았습니다. 분석해보니 URL 문제는 아니었구요. JSONObject는 사용 불가, JsonElement를 사용해야 합니다. 이거 찾느라 2~3시간을 보내야 했습니다.

(이 내용이 이번 포스트를 작성한 가장 큰 이유입니다.)


JSONObject와는 다른 JsonElement 사용법

JsonElement 객체로부터 자료를 읽는 방법은 JSONObject와 다릅니다. 차이점을 간략히 정리해 봅니다.

자료 접근JSONObjectJsonElement
문자열 읽기getString(memberName)get(memberName).asString
Boolean 값 읽기getBoolean(memberName)get(memberName).asBoolean
Int 정수 읽기getInt(memberName)get(memberName).asString
Long 정수 읽기getLong(memberName)get(memberName).asLong
Float 실수 읽기getFloat(memberName)get(memberName).asFloat
Double 실수 읽기getDouble(memberName)get(memberName).asDouble
JSON 객체 읽기getJSONObject(memberName)get(memberName).asJsonObject
JSON 배열 읽기getJSONArray(memberName)get(memberName).asJsonArray

참고 링크


지난 안드로이드 앱 개발기

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.20
TRX 0.12
JST 0.029
BTC 61533.72
ETH 3447.25
USDT 1.00
SBD 2.51