Komplexe JSON-Verarbeitung

Daten in Java importieren

Anthony Markham

VP Quant Developer

Komplexe JSON-Daten

  • Verschachtelte Objekte und Arrays
  • Gemischte Datentypen
  • Umgang mit APIs und Konfigurationsdateien 🧠

$$

Komplexe JSON-Daten

Daten in Java importieren

Verschachtelte JSON-Objekte

  • Verschachtelung - Objekte in Objekten
  • Tablesaw kann einfache Fälle automatisch abflachen
  • Abflachen - eine Spalte mit Listen oder Arrays in jeder Zeile in mehrere Zeilen umwandeln
{
  "customer": {
    "name": "John Doe",
    "address": {
      "street": "123 Main St",                            <- Verschachtelte Information
      "city": "Boston",                                   <- Verschachtelte Information
      "coordinates": {"lat": 42.3601, "lng": -71.0589}    <- Verschachtelt in verschachtelter Information
    }
  }
}
Daten in Java importieren

JSON-Abflachung

customer.name customer.address.street customer.address.city
John Doe 123 Main St Boston

$ $

customer.address.coordinates.lat customer.address.coordinates.lng
42.3601 -71.0589
Daten in Java importieren

JsonReader-Konfiguration

  • JsonReadOptions ermöglicht:
    • Quellenspezifikation (Datei, URL oder String)
    • Tabellenname-Konfiguration
    • Umgang mit fehlenden Werten
JsonReadOptions options = JsonReadOptions

.builder("complex.json")
.tableName("Products")
.missingValueIndicator("N/A")
.build();
Table data = new JsonReader().read(options);
missingValues = data.stringColumn("name").isMissing();
Daten in Java importieren

Tabellen verbinden

  • Verwende joinOn, um Tabellen zu verbinden
  • Ein innerer Join behält nur Zeilen, die in beiden Tabellen existieren
Table phones = Table.read().csv("phones.csv");   // name, phone

Table diets = Table.read().csv("diets.csv"); // name, diet
// Führe den inneren Join auf den beiden Tabellen aus Table joined = phones.joinOn("name").inner(diets);

$$

$$

  • Es gibt viele andere Arten von Joins
Daten in Java importieren

Lass uns üben!

Daten in Java importieren

Preparing Video For Download...