Scala에서 JSON 문자열 구문 분석
이 기사에서는 Scala 프로그래밍 언어에서 JSON 문자열을 구문 분석하는 방법을 설명합니다.
JSON은 웹 서버와 주고받는 일반적인 형식입니다. 여기서 목표는 개체 배열이 포함된 JSON 문자열이 주어지면 이를 Scala 개체로 역직렬화하여 애플리케이션에서 사용할 수 있도록 하는 것입니다.
일반 Scala 메서드 및 기능을 사용하여 JSON을 구문 분석하거나 다른 API 및 라이브러리를 사용하여 Lift-JSON 라이브러리 및 Circe와 같은 JSON 파일을 구문 분석할 수 있습니다.
Option
을 사용하여 Scala에서 JSON 문자열 구문 분석
Scala에서 패턴 일치와 함께 Option
을 사용하여 JSON 문자열을 구문 분석할 수 있습니다. 다음 JSON 문자열이 있다고 가정해 보겠습니다.
{
"languages": [{
"name": "English",
"is_active": true,
"completeness": 4.5
}, {
"name": "Japanese",
"is_active": true,
"completeness": 1.4
}]
}
아래 코드를 사용하여 Scala 객체에 매핑할 수 있습니다.
class parse[T]
{
def unapply(X:Option[Any]):Option[T] = if(X.isEmpty) {
None
} else {
Some(X.get.asInstanceOf[T])
}
}
object A extends parse[Map[String,Any]]
object B extends parse[List[Any]]
object C extends parse[String]
object D extends parse[Double]
object E extends parse[Boolean]
for{
A(mp) <- List(JSON.parseFull(str))
B(languages) = mp.get("languages")
language<-languages
A(temp) = Some(language)
C(store_name) = temp.get("name")
E(check_active) = temp.get("is_active")
D(completeness_level) = temp.get("completeness")
}
yield{
(store_name,check_active,completeness_level)
}
API를 사용하여 Scala에서 JSON 문자열 구문 분석
잘 알려진 Lift-JSON 라이브러리를 사용하여 JSON 문자열을 구문 분석할 수 있습니다. 이 라이브러리에는 JSON 문자열을 Scala 개체로 역직렬화하는 데 사용할 수 있는 많은 메서드가 포함되어 있습니다.
예제 코드:
import net.liftweb.json.DefaultFormats
import net.liftweb.json._
case class Employee(
Name: String,
id: Int,
username: String,
password: String,
DepartmentsWorking: List[String]
)
object ParseJsonArray extends App {
implicit val formats = DefaultFormats
val str ="""
{
"employees": [
{ "Account": {
"Name": "YMail",
"id": 3,
"username": "srj",
"password": "123456srj",
"DepartmentsWorking": ["sales", "IT", "HR"]
}},
]}
"""
val json = parse(str)
val contents = (json \\ "Account").children
for (temp <- contents) {
val m = temp.extract[Employee]
println(s"Employee: ${m.Name}, ${m.id}")
println(" Departments working: " + m.DepartmentsWorking.mkString(","))
}
}
위의 코드에서 JSON 데이터와 일치하는 케이스 클래스 Employee
를 생성했습니다.
API 사용의 이점은 API를 통해 보다 간결한 코드를 작성하고 기본 Scala 메서드가 제공하지 않을 수 있는 많은 기능을 제공할 수 있다는 것입니다.
결론
이 기사에서 우리는 평범한 오래된 Scala 방법을 사용하는 방법과 잘 알려진 API를 사용하여 JSON 문자열을 구문 분석하는 다른 방법을 사용하는 두 가지 방법을 보았습니다. 또한 작성 및 기능의 단순성으로 인해 구문 분석 중에 API가 항상 선호된다는 것을 이해했습니다.