Android

JSONObject, JsonObject

Dean83 2023. 4. 14. 07:22

보통 API 통신을 할떄 json 형식을 많이 쓰고, 클래스에 serialize를 이용하여 통신을 한다. 

 

하지만, JsonObject를 생성하여 바로바로 key와 value를 넣고 통신해야 할 때도 있다. 

 

그 경우는, 

 

- 자식-자식-자식... 이렇게 depth가 많아, 클래스를 만드는게 배보다 배꼽이 큰 경우

- 통신 횟수가 몇번 되지 않거나 중요도가 낮아 클래스를 만들기 애매한 경우

- 보내야 하는 내용들이 유동적으로 자주 바뀌는 경우

 

등등.   나의 경우 1, 3번에 해당이 되었고, 따라서 JSONObject 를 통해 바로 key value를 생성하였다.

 

그러나 통신시 통신 오류 문제가 발생했고, 로그를 확인해 보니 NameValuePairs 라는 항목이 json 에 

붙어 있었다. 

 

검색을 해보니, org.json.JSONObject. 를 사용하는 JSONObject를 사용할때 발생하는 문제로, 내부에 NameValuePairs 라는 변수가 있고, 이를 통해 key, value를 json을 생성하면서 발생한 문제였다.

 

com.google.gson.JsonObject 에 있는 JsonObject 를 사용하면 된다고 한다.  이를 사용하니 해결이 되었다. 

 

 

1. JsonObject 사용법

import com.google.gson.JsonObject

...

var 변수명 = JsonObject()
var 변수명1 = JsonObject()

//단순히 키-밸류일 경우
변수명.addProperty("키값","벨류값")

//JsonObject를 자식으로 넣을경우
변수명.add("키값",변수명1)