JSONObject란?
JSONObject란 JSON 형식의 String을 처리하도록 도와주는 Java 라이브러리이다.
JSONObject 사용 준비하기
JSONObject를 사용하기 위해 더미 JSON 파일이 있다고 가정해보자.
{
"title": "android",
"version" : 1,
"isValid" : false,
"types": [
"class",
"interface",
"object"
]
}
위 JSON은 Kotlin String으로는 다음과 같이 변환된다.
val result = "{'title':'android', 'version' : 0, 'isValid' : false, 'types':['class',''interface','object']}"
JSONObject 사용하기
JSON은 Key-Value 값으로 이루어진 쌍이다. Key는 무조건 String이며 Value는 문자열(String), 숫자(Int, Double, Long), 불리언(Boolean) 값이 올 수 있으며, Array형태의 값도 올 수 있다.
따라서 JSONObject는 이에 맞춰서 연산들을 제공한다. 아래에서는 이 중 대표적인 String, Int, Boolean 을 다룬다.
String 값 가져오기
String은 다음과 같이 가져올 수 있다. getString은 String 타입으로 반환되며 get은 Any 타입으로 반환된다. 따라서 Any타입으로 반환된 get은 toString()을 통해 형변환을 해주어야 한다.
val title : String = json.getString("title")
val titleFromAny : String = json.get("title").toString()
Int 값 가져오기
Int 값은 getInt와 get으로 가져올 수 있다. getInt는 Int를 return하며, get은 Any를 return한다. 따라서 두 번 형변환을 해주어야 Int로 변환할 수 있다.
val version = json.getInt("version")
val versionFromAny = json.get("name").toString().toInt()
Boolean 값 가져오기
Boolean은 형변환을 하지 말고 무조건 getBoolean으로 가져오는 편이 좋다.
val isValid = json.getBoolean("isValid")
JSONArray가져오기
JSONArray는 json.optJSONArray를 사용해 JSONArray 객체로 가져올 수 있으며 List<String>으로 형변환 하기 위해서는 map 함수를 사용해야 한다.
val jsonArray: JSONArray = json.optJSONArray("types")
val types : List<String> = (0 until jsonArray.length()).map {
jsonArray.getString(it).toString()
}
정리
JSONObject는 String을 JSONObject객체로 변환해서 Key값으로 Value를 가져오도록 해준다. 이때 필요한 타입에 맞추어 메서드를 써서 Value 값을 가져와야 한다.