[FIXED] Scala: Analysieren eines langen Strings mit einem JSON darin

Ausgabe

Ich habe ein Array in Scala, das so aussieht:

Input = [(KeyID, Field_1, Field_2, { 'id': 1, 'name': 'John'},{ 'id': 2, 'name': 'Dani'})]

Im Wesentlichen möchte ich die Felder extrahieren: Field_1, Field_2 und den JSON als Feld selbst:

Field_1, Field_2, { 'id': 1, 'name': 'John'},{ 'id': 2, 'name': 'Dani'}

Ich habe versucht, das () ganz am Ende und am Anfang zu löschen, indem ich Folgendes verwende:

Input.replaceAll("[()]","")

Manchmal enthält der JSON jedoch auch Klammern, wie kann man die Felder unabhängig voneinander extrahieren und wie kann man die JSON-Struktur beibehalten?

Wenn ich versuche, die Zeichenfolge zu teilen, bekomme ich:
Field_1, Field_2, id, 1, name, John, id, 2, name, Dani

Lösung

Ich bin mir nicht sicher, ob dies die Frage tatsächlich beantwortet, aber ich hoffe, das hilft.

Angenommen, Sie haben diese Daten:

val Input = Array((KeyID, Field_1, Field_2, "{ 'id': 1, 'name': 'John'}", "{ 'id': 2, 'name': 'Dani'}"))

Arrayist ein Java-Typ, also ist das erste, was zu tun ist, in einen Scala zu konvertieren List. Dann können Sie die Felder mit einer einfachen map.

val input = Input.toList

val keys = input.map(_._1)
val field1 = input.map(_._2)
val field2 = input.map(_._3)
val json1 = input.map(_._4)
val json2 = input.map(_._5)

Jedes valenthält eines Listder jeweiligen Felder.

Wenn Sie den JSON selbst verarbeiten möchten, gibt es verschiedene Scala-Bibliotheken dafür. Wählen Sie eine aus und kommen Sie dann zurück, wenn Sie bestimmte Probleme haben, sie zum Laufen zu bringen.


Beantwortet von –
Tim


Antwort geprüft von –
Mildred Charles (FixError Admin)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like

[FIXED] Spark führt Zeilen in einer Zeile zusammen

Ausgabe Ich habe folgenden Datenrahmen: #+-----------------------------+--------+---------+---------+ #|PROVINCE_STATE|COUNTRY_REGION|2/1/2020|2/10/2020|2/11/2020| #+--------------+--------------+--------+---------+---------+ #| -| Australia| 12| 15 | 15| #+--------------+--------------+--------+---------+---------+ Ich muss…