Scala에서 JSON 문자열 구문 분석

Suraj P 2023년6월21일
  1. Option을 사용하여 Scala에서 JSON 문자열 구문 분석
  2. API를 사용하여 Scala에서 JSON 문자열 구문 분석
  3. 결론
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가 항상 선호된다는 것을 이해했습니다.

작가: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub