Tabellen in JSON kodieren
Serialisieren Sie Lua-Daten.
Tabellen in JSON kodieren ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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 Kodierens
Kodieren ist das Gegenstück zum Dekodieren: Dabei wird eine Lua-Tabelle in eine JSON-Zeichenkette umgewandelt. Rufen Sie dazu json.encode(table) auf.
Das Ergebnis ist eine einzeilige Zeichenkette, die Sie in eine Datei schreiben oder über das Netzwerk senden können.
local json = require("dkjson")
local t = { name = "Leo", age = 9 }
print(json.encode(t))Objekte und Arrays
Wie eine Lua-Tabelle kodiert wird, hängt von ihren Schlüsseln ab. Eine Tabelle mit aufeinanderfolgenden ganzzahligen Schlüsseln ab 1 wird zu einem JSON-Array.
Eine Tabelle mit Zeichenkettenschlüsseln wird zu einem JSON-Objekt. Gemischte Tabellen sind mehrdeutig und sollten vermieden werden.
local json = require("dkjson")
print(json.encode({ 1, 2, 3 })) -- [1,2,3]
print(json.encode({ a = 1, b = 2 })) -- {"a":1,"b":2}Formatierte Ausgabe
JSON ist standardmäßig kompakt. dkjson kann die Ausgabe zur besseren Lesbarkeit einrücken, wenn Sie eine Optionentabelle mit indent = true übergeben.
Eine formatierte Ausgabe eignet sich hervorragend für Konfigurationsdateien, die von Menschen bearbeitet werden.
local json = require("dkjson")
local t = { name = "Ann", roles = { "dev", "lead" } }
print(json.encode(t, { indent = true }))Zahlen und boolesche Werte kodieren
Lua-Zahlen und boolesche Werte werden direkt in ihre JSON-Gegenstücke kodiert. Sowohl Ganzzahlen als auch Gleitkommazahlen werden zu JSON-Zahlen.
local json = require("dkjson")
local t = { count = 5, ratio = 1.5, active = true }
print(json.encode(t))Das nil-Problem
Sie können nil nicht in einer Tabelle speichern, um JSON null darzustellen, da die Zuweisung von nil den Schlüssel vollständig entfernt.
Um einen wörtlichen Nullwert auszugeben, verwenden Sie das Bibliotheks-Sentinel json.null als Wert.
local json = require("dkjson")
local t = { middle = json.null }
print(json.encode(t)) -- {"middle":null}Lücken in Arrays führen zu Problemen
Wenn eine Sequenz eine Lücke enthält, beispielsweise wenn der Index 2 nil ist, behandelt Lua sie nicht mehr als sauberes Array. Die Kodierung kann an der Lücke stoppen oder sich unerwartet verhalten.
Halten Sie Array-Indizes für vorhersehbare JSON-Arrays lückenlos und beginnen Sie bei 1.
local json = require("dkjson")
local t = { [1] = "a", [3] = "c" } -- gap at 2
print(json.encode(t)) -- unreliableJSON in eine Datei schreiben
Um Daten dauerhaft zu speichern, kodieren Sie die Tabelle in einen String und schreiben Sie diesen String in eine Datei.
So speichern Sie Einstellungen, Punktestände oder beliebige strukturierte Zustände.
local json = require("dkjson")
local data = { theme = "dark", volume = 8 }
local f = io.open("settings.json", "w")
f:write(json.encode(data, { indent = true }))
f:close()Leere Tabellen werden standardmäßig zu Objekten
Eine leere Lua-Tabelle {} enthält keine Schlüssel. Daher kodiert dkjson sie standardmäßig als leeres Objekt {} und nicht als Array.
Wenn Sie ein leeres Array benötigen, können Sie die Tabelle in dkjson entsprechend markieren. Andernfalls ist der Typ nicht eindeutig.
local json = require("dkjson")
print(json.encode({})) -- {}Die Reihenfolge der Schlüssel ist nicht garantiert
Lua-Tabellen haben für String-Schlüssel keine inhärente Reihenfolge. Daher kann die Reihenfolge der Felder im kodierten JSON variieren.
Verlassen Sie sich nicht auf die Reihenfolge der Felder. JSON-Verbraucher sollten Schlüssel anhand ihres Namens und nicht anhand ihrer Position suchen.
Konsistenz beim Roundtrip
Durch anschließendes Dekodieren der Kodierung sollte eine äquivalente Tabelle entstehen. Dieser Roundtrip eignet sich gut, um Ihre Datenverarbeitung zu testen.
local json = require("dkjson")
local orig = { a = 1, list = { 2, 3 } }
local copy = json.decode(json.encode(orig))
print(copy.a, copy.list[2])Mit cjson kodieren
lua-cjson bietet ebenfalls encode. Es ist schneller, verfügt jedoch über weniger Formatierungsoptionen und löst Fehler aus, anstatt sie zurückzugeben.
Für eine schön eingerückte Ausgabe ist dkjson normalerweise die benutzerfreundlichere Wahl.
local cjson = require("cjson")
local s = cjson.encode({ ok = true, n = 42 })
print(s)Kurzer Test
Testen Sie, wie gut Sie die Kodierung von Lua-Tabellen verstanden haben.
Zusammenfassung
Beim Kodieren werden Lua-Tabellen in JSON-Strings umgewandelt. Sequenzen mit Integer-Schlüsseln werden zu Arrays, Tabellen mit String-Schlüsseln zu Objekten.
Verwenden Sie json.null für wörtliche Nullwerte, halten Sie Arrays lückenlos und übergeben Sie für eine lesbare Ausgabe indent = true. Als Nächstes befassen Sie sich mit tief verschachtelten Daten.
Häufig gestellte Fragen
Ist die Lektion „Tabellen in JSON kodieren“ kostenlos?
Ja — der vollständige Text von „Tabellen in JSON kodieren“ 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 „Tabellen in JSON kodieren“?
Serialisieren Sie Lua-Daten. 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 3 von 4.
Wie lange dauert die Lektion „Tabellen in JSON kodieren“?
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