1. play-json 라이브러리 추가
- build.sbt 파일에 play-json 라이브러리를 추가합니다.
- https://mvnrepository.com/artifact/com.typesafe.play/play-json_2.13/2.9.2#sbt
name := "untitled"
version := "0.1"
scalaVersion := "2.12.15"
// https://mvnrepository.com/artifact/com.typesafe.play/play-json
libraryDependencies += "com.typesafe.play" %% "play-json" % "2.9.2"
2. JSON 예시
- 실습으로 사용할 json String 데이터는 다음과 같습니다.
{
"class": "A",
"grade": "1",
"members": [{
"name": "kim",
"score": "80"
}, {
"name": "lee",
"score": "84"
}, {
"name": "jang",
"score": "65"
}]
}
var jsonString = "{\"class\":\"A\",\"grade\":\"1\",\"members\":[{\"name\":\"kim\",\"score\":\"80\"},{\"name\":\"lee\",\"score\":\"84\"},{\"name\":\"jang\",\"score\":\"65\"}]}";
2. Json 핸들링
- class와 grade 값을 가지고 오는 예시입니다.
[Json String To JsObject]
: Json.parse를 이용하여 Json 문자열을 JsObject로 변환합니다.
jsonString = "json 문자열"
var jsonObject = Json.parse(jsonString)
[JsObject 특정 키의 값 추출]
var value = (jsonObject \ "key").as[String]
[JsObject]
String(Key), JsValue 형태의 Map = Map[String, JsValue]
import play.api.libs.json.{Json}
object JsonTest {
def main(args: Array[String]): Unit = {
var jsonString = "{\"class\":\"A\",\"grade\":\"1\",\"member\":[{\"name\":\"kim\",\"score\":\"80\"},{\"name\":\"lee\",\"score\":\"84\"},{\"name\":\"jang\",\"score\":\"65\"}]}";
// Json String to JsObject
var jsonObject = Json.parse(jsonString)
println(jsonObject)
println(jsonObject.getClass) // JsObject
// class value 추출
var classValue = (jsonObject \ "class").as[String]
println(classValue)
// grade value 추출
var gradeValue = (jsonObject \ "grade").as[String]
println(gradeValue)
}
}
3. Json Array 핸들링
- Json Array 형태인 members의 값을 가지고 오는 예시입니다.
- Json Array 같은 경우엔 Json.parse()를 이용해 파싱 할 경우 JsArray 객체로 반환받습니다. 반환받은 JsArray는 Scala의 ArrayBuffer로 변환하여 핸들링하면 편리합니다.
import play.api.libs.json.{JsArray, Json}
object JsonTest {
def main(args: Array[String]): Unit = {
var jsonString = "{\"class\":\"A\",\"grade\":\"1\",\"members\":[{\"name\":\"kim\",\"score\":\"80\"},{\"name\":\"lee\",\"score\":\"84\"},{\"name\":\"jang\",\"score\":\"65\"}]}";
// Json String to JsObject
var jsonObject = Json.parse(jsonString)
// String JsonArray To JsArray
var jsonArrayJsArray = (jsonObject \ "members").get
println(jsonArrayJsArray.getClass) // JsArray
// JsArray to ArrayBuffer
var jsonArray = jsonArrayJsArray.asInstanceOf[JsArray].value
println(jsonArray.getClass) // ArrayBuffer
println(jsonArray.size)
println(jsonArray(0))
println(jsonArray(1))
println(jsonArray(2))
// ArrayBuffer Element JsObject
var jsonArrayElement = jsonArray(0)
println(jsonArrayElement.getClass) //JsObject
var name = (jsonArray(0) \ "name").as[String]
var score = (jsonArray(0) \ "score").as[String]
println(name)
println(score)
// foreach value
jsonArray.foreach(l => {
println((l \ "name").as[String] + " : " + (l \ "score").as[String])
})
}
}
'Backend > Scala' 카테고리의 다른 글
[Scala] 스칼라 var, val 차이 (변수, 상수) (0) | 2022.02.03 |
---|---|
[Scala] 스칼라 sbt 프로젝트 자바 라이브러리 추가 (build.sbt) (0) | 2022.01.24 |
[Scala] Scala와 Java 연동하여 사용하기 (0) | 2022.01.23 |
[Scala] IntelliJ Scala sbt 프로젝트 생성 (0) | 2022.01.22 |