JSONObject vs Gson

Jonghwan Choi·2023년 4월 25일
0

Android

목록 보기
2/9

Java와 Kotlin에서 객체를 JSON string으로 직렬화하거나 JSON string을 객체로 역직렬화할 경우, 표준 라이브러리인 org.json.JSONObject를 쓰거나 외부 라이브러리인 com.google.gson.Gson을 쓰는 경우가 일반적이다.

나는 보통 사용법이 간편한 Gson을 쓰지만 간혹 의존성 추가가 귀찮아서 JSONObject를 쓸 때가 있는데, 그럴 때마다 자꾸 쓰는 방법을 까먹어서 이번 기회에 한번 정리해 놓으려 한다.

0. 예시로 쓸 객체와 JSON

데이터 클래스

data class Person(
	val name: String,
    val age: Int
)

JSON string

{
	"name":"sam",
  	"age":30
}

1. object to JSON

JSONObject

fun main(){
	val sam = Person("sam", 30)
    val jsonObject = JSONObject()
    
    jsonObject.put("name", sam.name)
    jsonObject.put("age", sam.age)
    val jsonString = jsonObject.toString()
    
    Log.d("TTT", jsonString) // 결과물 확인용
}

Gson

fun main(){
	val sam = Person("sam", 30)
    val gson = Gson()
    
    val jsonString = gson.toJson(sam)
    
    Log.d("TTT", jsonString) // 결과물 확인용
}

2. JSON to object

JSONObject

fun main(){
	val jsonString = "{\"name\":\"sam\", \"age\":30}"
    val jsonObject = JSONObject(jsonString)
    
    val name = jsonObject.getString("name")
    val age = jsonObject.getInt("age")
    val sam = Person(name, age)
    
    Log.d("TTT", sam.toString()) // 결과물 확인용
}

Gson

fun main(){
	val jsonString = "{\"name\":\"sam\", \"age\":30}"
    val gson = Gson()
    
    val sam = gson.fromJson(jsonString, Person::class.java)
    
	Log.d("TTT", sam.toString()) // 결과물 확인용
}
profile
유니티 게임 클라이언트 개발자를 꿈꾸는 뉴비

0개의 댓글