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'}"))
Array
ist 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 val
enthält eines List
der 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)