Analysieren Sie JSON-Strings in Scala

Suraj P 21 Juni 2023 Scala Scala JSON
  1. Verwenden Sie Option, um JSON-Strings in Scala zu parsen
  2. Verwenden Sie APIs zum Parsen von JSON-Strings in Scala
  3. Abschluss
Analysieren Sie JSON-Strings in Scala

In diesem Artikel erfahren Sie, wie Sie JSON-Strings in der Programmiersprache Scala parsen.

JSON ist ein gängiges Format für den Austausch von und zu einem Webserver. Das Ziel hier ist also, dass wir einen gegebenen JSON-String mit einem Array von Objekten in Scala-Objekte deserialisieren wollen, damit wir ihn in unserer Anwendung verwenden können.

Wir können JSON mit den einfachen Scala-Methoden und -Funktionen parsen oder verschiedene APIs und Bibliotheken verwenden, um JSON-Dateien wie die Lift-JSON-Bibliothek und Circe zu parsen.

Verwenden Sie Option, um JSON-Strings in Scala zu parsen

Wir können Option zusammen mit Pattern Match in Scala verwenden, um einen JSON-String zu parsen. Nehmen wir an, wir haben die folgende JSON-Zeichenfolge:

{
        "languages": [{
            "name": "English",
            "is_active": true,
            "completeness": 4.5
        }, {
            "name": "Japanese",
            "is_active": true,
            "completeness": 1.4
        }]
}

Wir können den folgenden Code verwenden, um ihn Scala-Objekten zuzuordnen:

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)
}

Verwenden Sie APIs zum Parsen von JSON-Strings in Scala

Wir können eine bekannte Lift-JSON-Bibliothek verwenden, um die JSON-Zeichenfolge zu analysieren. Diese Bibliothek enthält viele Methoden, die verwendet werden könnten, um die JSON-Zeichenfolge in Scala-Objekte zu deserialisieren.

Beispielcode:

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(","))
    }
}

Im obigen Code haben wir eine Case-Klasse Employee erstellt, um die JSON-Daten abzugleichen.

Der Vorteil der Verwendung von APIs besteht darin, dass sie uns dabei helfen, prägnanteren Code zu schreiben und viele Funktionen bereitzustellen, die primitive Scala-Methoden möglicherweise nicht bieten.

Abschluss

In diesem Artikel haben wir zwei Methoden gesehen, eine, bei der wir einfache alte Scala-Methoden verwendet haben, und eine andere, bei der wir eine andere Methode verwendet haben, bei der wir eine bekannte API zum Analysieren der JSON-Zeichenfolge verwendet haben. Und wir haben verstanden, dass APIs beim Parsen aufgrund der Einfachheit des Schreibens und seiner Funktionalitäten immer bevorzugt werden.

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Autor: 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