0Pricing
Lua Academy · Lektion

Verschachtelte Daten behandeln

Arbeiten Sie mit komplexen Strukturen.

Verschachtelte Daten behandeln ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Verschachtelte Daten gibt es überall

JSON aus der Praxis ist nur selten flach. Objekte enthalten Objekte und Arrays enthalten Objekte, oft über mehrere Verschachtelungsebenen hinweg.

In Lua bedeutet das Tabellen innerhalb von Tabellen. Die gute Nachricht: decode und encode verarbeiten Verschachtelungen automatisch.

Ein Objekt innerhalb eines Objekts

Wenn ein JSON-Wert selbst ein Objekt ist, wird er in eine verschachtelte Lua-Tabelle dekodiert. Sie greifen über verketteten Feldzugriff auf tiefere Ebenen zu.

local json = require("dkjson")
local d = json.decode('{"user": {"name": "Eve", "age": 30}}')
print(d.user.name)
print(d.user.age)

Ein Array aus Objekten

Eine sehr häufige Struktur ist ein JSON-Array aus Objekten, etwa eine Liste von Datensätzen. Es wird in eine Sequenz aus Tabellen dekodiert.

Durchlaufen Sie sie mit ipairs und lesen Sie die Felder jedes Elements aus.

local json = require("dkjson")
local d = json.decode('[{"id":1},{"id":2}]')
for _, item in ipairs(d) do
  print(item.id)
end

Zugriff auf tief verschachtelte Daten

Sie können den Zugriff so tief verketten, wie es die Daten erfordern. Jede Ebene ist einfach ein weiterer Tabellenzugriff.

Fehlt jedoch eine Zwischenebene, führt die Kette zum Fehler „attempt to index a nil value“.

local json = require("dkjson")
local d = json.decode('{"a":{"b":{"c": 42}}}')
print(d.a.b.c)

Sicherer Zugriff auf verschachtelte Daten

Um Abstürze bei fehlenden Ebenen zu vermeiden, prüfen Sie jeden Schritt oder verwenden Sie die Kurzschlussauswertung mit and.

Die and-Kette endet beim ersten nil und gibt nil zurück, anstatt einen Fehler auszulösen.

local json = require("dkjson")
local d = json.decode('{"a":{}}')
local c = d.a and d.a.b and d.a.b.c
print(c)  -- nil, no crash

Verschachtelte Arrays durchlaufen

Arrays können Objekte enthalten, die wiederum weitere Arrays enthalten. Verschachteln Sie Ihre Schleifen passend zur Struktur.

local json = require("dkjson")
local d = json.decode('[{"tags":["a","b"]}]')
for _, rec in ipairs(d) do
  for _, tag in ipairs(rec.tags) do
    print(tag)
  end
end

Verschachtelte Tabellen erstellen

Um verschachteltes JSON zu kodieren, verschachteln Sie einfach Lua-Tabellen. Der Kodierer durchläuft die gesamte Struktur rekursiv.

local json = require("dkjson")
local t = {
  user = { name = "Jo", roles = { "admin", "editor" } }
}
print(json.encode(t, { indent = true }))

Verschachtelte Werte ändern

Sie können Felder auf jeder beliebigen Tiefe auslesen, ändern und hinzufügen, bevor Sie die Daten erneut kodieren. Das ist der Kern der Datentransformation.

local json = require("dkjson")
local d = json.decode('{"cfg":{"volume":5}}')
d.cfg.volume = 8
d.cfg.muted = false
print(json.encode(d))

Arrays und Objekte kombinieren

JSON kombiniert Arrays und Objekte auf verschiedenen Ebenen ohne Einschränkung. Lua bildet dies mit verschachtelten Sequenz- und Schlüssel-Tabellen ab.

Achten Sie nur darauf, dass jede Tabelle durchgehend einer der beiden Formen entspricht.

local json = require("dkjson")
local t = {
  team = "red",
  members = { { id = 1 }, { id = 2 } }
}
print(json.encode(t))

Unbekannte Strukturen durchlaufen

Wenn Sie die Struktur im Voraus nicht kennen, verwenden Sie type(), um jeden Wert zu untersuchen und bei Tabellen rekursiv weiterzugehen.

So können Sie generische Prozessoren für beliebiges JSON schreiben.

local function walk(v)
  if type(v) == "table" then
    for k, sub in pairs(v) do walk(sub) end
  else
    print(v)
  end
end

Bei null in Verschachtelungen aufpassen

Ein tief in verschachtelten Daten liegender Nullwert wird in dkjson weiterhin zu json.null dekodiert. Berücksichtigen Sie das beim Durchlaufen von Strukturen, damit Sie ihn nicht mit einer echten Tabelle oder einem echten Wert verwechseln.

local json = require("dkjson")
local d = json.decode('{"a":{"b": null}}')
if d.a.b == json.null then
  print("b is null")
end

Kurzer Test

Testen Sie, wie gut Sie mit verschachteltem JSON in Lua umgehen können.

Zusammenfassung

Verschachteltes JSON wird auf Tabellen innerhalb von Tabellen abgebildet. decode und encode übernehmen die Rekursion für Sie.

Greifen Sie über verkettete Zugriffe auf tiefere Ebenen zu, sichern Sie sich jedoch mit and-Ketten gegen fehlende Ebenen ab. Erstellen Sie verschachtelte Ausgaben, indem Sie Lua-Tabellen verschachteln, und behalten Sie Nullwerte sowie den Unterschied zwischen Arrays und Objekten auf jeder Ebene im Blick.

Häufig gestellte Fragen

Ist die Lektion „Verschachtelte Daten behandeln“ kostenlos?

Ja — der vollständige Text von „Verschachtelte Daten behandeln“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Verschachtelte Daten behandeln“?

Arbeiten Sie mit komplexen Strukturen. Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Lua Academy zu starten?

Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Verschachtelte Daten behandeln“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?

Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Warum JSON
  2. JSON in Tabellen dekodieren
  3. Tabellen in JSON kodieren
  4. Verschachtelte Daten behandeln
← Zurück zu Lua Academy