Lesen Sie die JSON -Datei in Scala

Lesen Sie die JSON -Datei in Scala
„JavaScript -Objektnotation oder JSON ist eine Codierungssprache. Der größte Ersatz für XML ist ein vollständig separates Datenaustauschformat. Der Prozess des Parsens einer JSON -Datei und des Erhaltens der wesentlichen Daten daraus in diesem Handbuch wird behandelt. JSON ist ein einfaches Datenaustauschformat, das für Roboter einfach Daten analysieren und generieren kann, sowie für Menschen zum Lesen und Schreiben. Es ist ein bestimmtes Textformat, das nicht sprachspezifisch ist. Es stehen mehrere Bibliotheken zur Verfügung, die JSON analysieren können, was es schwierig macht, das Beste für unsere Scala -Dienste auszuwählen. Circe, Circe Optics und Lift-Json, die wir als die größte Wahl waren, weil es mit JSON umgeht.”

Beispiel Nr. 1: JSON mit Circe in Scala in Ubuntu 20 analysieren.04

Das CIRCE Scala -Paket erleichtert die Arbeit mit JSON, indem es einfach wird, JSON -Strings in Scala -Objekte zu dekodieren oder Scala -Objekte in JSON zu konvertieren. Wir brauchen weniger Codezeilen, um mit JSON in Scala zu interagieren, und dank der automatischen Generation von Objektcodierern und Decodern der Bibliothek durch die Bibliothek.

In diesem Fall haben wir das CIRCE -Paket und den abgeleitetenCoder importiert, das es uns ermöglicht, eine JSON -Zeichenfolge abhängig von der Fallklasse „Animal“ zu analysieren. Die Fallklasse repräsentiert das Objekt "Readjson", und das Objekt wird als Hauptdefinition bezeichnet. Wir haben die Variable "JSON_VALUE" definiert, die mit den JSON -Formatdaten initialisiert wird. Die implizite Decoderfunktion, DerivedCoder, aus der CIRCE -Fallklasse, ist das, was wir in diesem Beispiel bereitstellen müssen. Der Fehler tritt auf, wenn wir das implizite nicht anbieten. Unter der Haube die Umsetzung des Parsers.Decodieren. Dann haben wir eine übereinstimmende Kennung, die einen von zwei Fällen zurückgibt.

Wir haben die JSON -Daten in die Scala dekodiert, indem wir das CIRCE Scala -Paket wie folgt verwenden:

Beispiel Nr. 2: JSON -Array in Scala in Ubuntu 20 analysieren.04

Ein Array kann verwendet werden, um JSON zu starten. Lassen Sie uns Circe verwenden, um das zu analysieren.

Es ähnelt dem früheren Code im Aussehen. Zuerst haben wir zwei Circe -Pakete importiert. Dann haben wir die Fallklasse "Früchte" definiert und es enthält einen Parameter "F_Name". Wir haben das „ReadArray“ für die Hauptmethodedefinition festgelegt. Anschließend deklarieren wir die Variable "InputJson" für die JSON -Daten dar. Möglicherweise haben Sie jedoch ein paar Dinge bemerkt. Nur der Fall der Klassenfrüchte Decoder muss erstellt werden. Aufliste [Früchte] verlangt kein Decoder, der erstellt wird. Dies ist so, dass Circe die Liste bequem entschlüsseln kann [a].

Ein generischer Typ wird durch die Inlist [a] jeglicher Art angezeigt. Circe codiert und dekodiert jeden Typ separat. Die Variable „Ergebnis“ entspricht dem Fall, wodurch entweder den rechten Fall zum Erfolg des Parsens von JSON an Scala oder den linken Fall beim Versagen zurückgeht.

Beispiel Nr. 3: JSON -String in Scala in Ubuntu 20 analysieren.04

Das Circe-Core-Paket enthält das Cursorobjekt, das in drei verschiedenen Formen erhältlich ist: Cursor, Hcursor und Acursor. Damit können Daten aus der JSON -Struktur extrahiert oder modifiziert werden. Wir werden im folgenden Beispiel mit einem algebraischen Datentyp dekodieren. Sie können es mit der Aufzählung vergleichen, wenn Sie damit nicht vertraut sind.


Mit dem Import der Scala Circe -Pakete haben wir die Codeimplementierung begonnen. Wir haben drei Fallklassen definiert, "Fußball", "Hockey" und "Tennis", die mit dem Objekt "Level" erweitert werden, die erweitert sind. Außerdem haben wir die Fallklasse „Fehler“ für die Ausnahmebehandlung generiert. Dann haben wir das Objekt "Level" dargestellt. Wir haben das Schlüsselwort "entweder" verwendet, das die Ebene und den Fehler darin aufweist. Das „Bes“ hat zwei Kinder, rechts und links, die mit der Fallerklärung aufgerufen werden. Der rechte Fall wird zum Erfolg ausgeführt, und der linke Fall wird beim Fehler ausgeführt.

Wir haben ein anderes Objekt als „Decoder“ für die Primärcode -Implementierung eingerichtet. Hier haben wir eine Variable „JSON“ erstellt und die JSON -Daten zugewiesen, die drei Zeichenfolgen enthält. Die implizite Variable ist definiert als "RatingDecoder", das als "Decoder" -Objekt bezeichnet wird und den entweder [Fehler, Level] an sie übergibt. Wir haben das Cursorobjekt "Hcursor" aufgerufen, das die JSON -Struktur ändert. Unter der Implementierung der Parse -Funktion haben wir die JSON -Daten analysiert. Der JSON wird analysiert und in Scala generiert, wenn sie mit den angegebenen Fallanweisungen abgestimmt sind.

Sie können sehen, dass Decodierer [entweder [Fehler, Level]] alle Anforderungen zu erfüllen scheint. Der obige Code liefert bei der Ausführung die erwarteten Ergebnisse.

Beispiel Nr. 4: JSON mit der Lift-Json-Bibliothek in Scala in Ubuntu 20 analysieren.04

Verwenden Sie eine Kombination aus den Techniken der Lift-Json-Bibliothek. Das folgende Beispiel zeigt, wie die String -Jendring in viele Objekte deserialisiert werden kann, während sie jedes Objekt wie folgt angezeigt wird:


Danach definierten wir eine Klasse "Employees Account". Die Fallklasse enthält einige Attribute mit den angegebenen Datentypen. Dann haben wir den „ParsejsonArray“ erstellt und eine Zeichenfolge namens JSonstring definiert, die einige Beispiel -JSON -Daten enthält. Danach haben wir die Variable „JSON“ deklariert, in der wir die Parse -Funktion aufgerufen haben. Die Parse -Funktion wandelt diese Zeichenfolge in ein JValue -Objekt mit dem Namen JSON um.

Die \\ -Methode wird dann verwendet, um die JSON -Daten für jedes Element mit dem Namen "E -Mail" zu durchsuchen. Diese Syntax ist gut, da sie den in der Scala XML-Bibliothek angewendeten XPath-ähnlichen Techniken entspricht. Die For -Loop sucht wiederholt nach Elementen, extrahiert jedes Element als „E -Mail“ -Objekt und druckt dann den Inhalt der Daten dieses Objekts aus. Wir haben einige der Felder an die Println -Erklärung übergeben, die nur in die Scala analysiert wird.

Die folgende Scala -Ausgabe wird erhalten, nachdem das Programm ausgeführt wurde, um JSON -Daten zu analysieren.

Abschluss

In diesem Artikel wurden zwei Ansätze vorgestellt: Einer verwendete Circe Scala-Methoden, und der andere verwendete einen bekannten Lift-Json, um den JSON-Text zu analysieren. Das Circe Scala-Dienstprogramm erleichtert die Interaktion mit JSON durch die Verwendung einer benutzerfreundlichen API. Wir können jederzeit einen benutzerdefinierten Encoder oder Decoder erstellen, oder wir können den Feldxtraktionscode direkt verwenden, um das Verhalten des Systems zu ändern. Und wir haben festgestellt, dass beide aufgrund ihrer Merkmale und ihrer einfachen Entwicklung bei der Parsen immer bevorzugt werden.