JSON in Tabellen dekodieren
Parsen Sie JSON-Strings.
JSON in Tabellen dekodieren ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Grundlagen des Dekodierens
Dekodieren wandelt eine JSON-Zeichenkette in einen Lua-Wert um, mit dem Sie arbeiten können. Der Einstiegspunkt ist json.decode(text).
Wenn das JSON-Element auf oberster Ebene ein Objekt ist, erhalten Sie eine Lua-Tabelle mit Zeichenketten als Schlüsseln. Ist es ein Array, erhalten Sie eine Tabelle mit numerischen Indizes.
local json = require("dkjson")
local data = json.decode('{"id": 7}')
print(data.id)Objektfelder lesen
Ein dekodiertes JSON-Objekt verhält sich wie jede Lua-Tabelle. Greifen Sie mit der Punkt- oder Klammernotation auf Werte zu.
Schlüssel, die keine gültigen Lua-Bezeichner sind, etwa solche mit Leerzeichen, müssen mit der Klammernotation angesprochen werden.
local json = require("dkjson")
local u = json.decode('{"name": "Mia", "full name": "Mia Lee"}')
print(u.name)
print(u["full name"])Arrays dekodieren
Ein JSON-Array wird in eine Lua-Tabelle mit einer ab 1 indizierten Sequenz dekodiert. Sie können sie mit ipairs oder einer numerischen Schleife durchlaufen.
Denken Sie daran: Lua-Arrays beginnen beim Index 1, nicht bei 0.
local json = require("dkjson")
local nums = json.decode('[10, 20, 30]')
for i, v in ipairs(nums) do
print(i, v)
endZahlen und boolesche Werte
JSON-Zahlen werden in Lua-Zahlen dekodiert, und JSON-true/false werden zu booleschen Werten in Lua.
Nach dem Dekodieren können Sie sie direkt in arithmetischen Ausdrücken oder Bedingungen verwenden.
local json = require("dkjson")
local d = json.decode('{"qty": 3, "paid": false}')
if not d.paid then
print("unpaid, qty =", d.qty)
endnull behandeln
JSON-null ist problematisch, weil Lua-nil einen Schlüssel aus einer Tabelle entfernt. Bibliotheken behandeln dies unterschiedlich.
dkjson dekodiert null in einen speziellen Wert, das Sentinel json.null, sodass der Schlüssel erhalten bleibt. Vergleichen Sie den Wert damit, um null zu erkennen.
local json = require("dkjson")
local d = json.decode('{"mid": null}')
if d.mid == json.null then
print("mid is null")
endAus einer Datei dekodieren
Häufig befindet sich das JSON in einer Datei. Lesen Sie die gesamte Datei in eine Zeichenkette ein und dekodieren Sie diese anschließend.
Dieses Muster wird häufig zum Laden von Konfigurationen oder gespeicherten Spielständen verwendet.
local json = require("dkjson")
local f = io.open("config.json", "r")
local text = f:read("*a")
f:close()
local cfg = json.decode(text)
print(cfg.theme)Die drei Rückgabewerte
Das decode von dkjson gibt bis zu drei Werte zurück: das dekodierte Ergebnis, die Position, an der die Analyse angehalten wurde, und eine Fehlermeldung.
Bei Erfolg ist das Ergebnis nicht nil. Bei einem Fehler ist es nil, und der dritte Wert erklärt den Grund.
local json = require("dkjson")
local obj, pos, err = json.decode('{"a":1}')
print(obj.a, pos, err)Eingaben validieren
Vertrauen Sie niemals externem JSON. Prüfen Sie immer das Ergebnis, bevor Sie es verwenden, damit eine fehlerhafte Nutzlast Ihr Programm nicht zum Absturz bringt.
local json = require("dkjson")
local function safeDecode(s)
local v, _, err = json.decode(s)
if not v then return nil, err end
return v
endUnterschiede bei cjson
lua-cjson funktioniert ähnlich, löst bei ungültigen Eingaben jedoch einen Fehler aus, statt ihn zurückzugeben. Verpacken Sie den Aufruf zur Sicherheit in pcall.
cjson ist schneller, was bei der Analyse großer Datenmengen eine Rolle spielt.
local cjson = require("cjson")
local ok, data = pcall(cjson.decode, '{"x":1}')
if ok then print(data.x) else print("error") endFehlende Schlüssel sind nil
Wenn Sie einen Schlüssel lesen, der im JSON nicht vorhanden war, gibt Lua einfach nil zurück. Das ist normal und löst keinen Fehler aus.
Verwenden Sie mit or einen Fallback, um Standardwerte für optionale Felder bereitzustellen.
local json = require("dkjson")
local d = json.decode('{"name": "Sam"}')
local age = d.age or 0
print(d.name, age)Leere Tabellen sind mehrdeutig
Sowohl ein leeres JSON-Objekt {} als auch ein leeres Array [] werden in eine leere Lua-Tabelle dekodiert. Nach dem Dekodieren können Sie nicht mehr feststellen, um welches davon es sich handelte.
Das ist vor allem beim erneuten Kodieren relevant. Behalten Sie diese Mehrdeutigkeit bei einer Rückkonvertierung im Hinterkopf.
Kurze Überprüfung
Überprüfen Sie, was Sie über das Dekodieren von JSON gelernt haben.
Zusammenfassung
Beim Dekodieren wird JSON-Text in Lua-Tabellen umgewandelt. Objekte werden zu Tabellen mit Zeichenketten als Schlüsseln, Arrays zu Sequenzen mit Indizes ab 1.
Validieren Sie das Ergebnis immer, behandeln Sie null über das Sentinel der Bibliothek und denken Sie daran, dass fehlende Schlüssel einfach nil sind. Als Nächstes kodieren Sie Lua-Tabellen zurück in JSON.
Häufig gestellte Fragen
Ist die Lektion „JSON in Tabellen dekodieren“ kostenlos?
Ja — der vollständige Text von „JSON in Tabellen dekodieren“ 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 „JSON in Tabellen dekodieren“?
Parsen Sie JSON-Strings. 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 2 von 4.
Wie lange dauert die Lektion „JSON in Tabellen dekodieren“?
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
- Warum JSON
- JSON in Tabellen dekodieren
- Tabellen in JSON kodieren
- Verschachtelte Daten behandeln