Image
Kotlin/기타

[Kotlin] JSONObject 사용해서 JSON 처리하기

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형태의 값도 올 수 있다.

 

그림1. JSONObject에서 지원하는 메서드

 

따라서 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 값을 가져와야 한다.

반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com