YAML-Kodierung
YAML-Kodierung
Abschnitt betitelt „YAML-Kodierung“Parsen Sie YAML-Dokumente in Lua-Tabellen und serialisieren Sie Lua-Werte zu YAML-Strings.
local yaml = require("yaml")Kodierung
Abschnitt betitelt „Kodierung“Wert kodieren
Abschnitt betitelt „Wert kodieren“Kodiert eine Lua-Tabelle ins YAML-Format.
-- Einfache Schlüssel-Wert-Paarelocal config = { name = "myapp", port = 8080, debug = true}local out = yaml.encode(config)-- name: myapp-- port: 8080-- debug: true
-- Arrays werden zu YAML-Listenlocal items = {"apple", "banana", "cherry"}yaml.encode(items)-- - apple-- - banana-- - cherry
-- Verschachtelte Strukturenlocal server = { http = { address = ":8080", timeout = "30s" }, database = { host = "localhost", port = 5432 }}yaml.encode(server)| Parameter | Typ | Beschreibung |
|---|---|---|
data | table | Zu kodierende Lua-Tabelle |
options | table? | Optionale Kodierungsoptionen |
Optionen
Abschnitt betitelt „Optionen“| Feld | Typ | Beschreibung |
|---|---|---|
field_order | string[] | Benutzerdefinierte Feldreihenfolge - Felder erscheinen in dieser Reihenfolge |
sort_unordered | boolean | Felder, die nicht in field_order sind, alphabetisch sortieren |
-- Feldreihenfolge in Ausgabe steuernlocal entry = { zebra = 1, alpha = 2, name = "test", kind = "demo"}
-- Felder erscheinen in angegebener Reihenfolge, Rest alphabetisch sortiertlocal result = yaml.encode(entry, { field_order = {"name", "kind"}, sort_unordered = true})-- name: test-- kind: demo-- alpha: 2-- zebra: 1
-- Alle Felder alphabetisch sortierenyaml.encode(entry, {sort_unordered = true})-- alpha: 2-- kind: demo-- name: test-- zebra: 1Gibt zurück: string, error
Dekodierung
Abschnitt betitelt „Dekodierung“String dekodieren
Abschnitt betitelt „String dekodieren“Parst einen YAML-String in eine Lua-Tabelle.
-- Konfiguration parsenlocal config, err = yaml.decode([[server: host: localhost port: 8080features: - auth - logging - metrics]])if err then return nil, errend
print(config.server.host) -- "localhost"print(config.server.port) -- 8080print(config.features[1]) -- "auth"
-- Aus Dateiinhalt parsenlocal content = fs.read("config.yaml")local settings, err = yaml.decode(content)if err then return nil, errors.wrap(err, "invalid config file")end
-- Gemischte Typen behandelnlocal data = yaml.decode([[name: testcount: 42ratio: 3.14enabled: truetags: - lua - wippy]])print(type(data.count)) -- "number"print(type(data.enabled)) -- "boolean"print(type(data.tags)) -- "table"| Parameter | Typ | Beschreibung |
|---|---|---|
data | string | Zu parsender YAML-String |
Gibt zurück: any, error - Gibt table, array, string, number oder boolean zurück, abhängig vom YAML-Inhalt
| Bedingung | Art | Wiederholbar |
|---|---|---|
| Eingabe ist keine Tabelle (encode) | errors.INVALID | nein |
| Eingabe ist kein String (decode) | errors.INVALID | nein |
| Leerer String (decode) | errors.INVALID | nein |
| Ungültige YAML-Syntax | errors.INTERNAL | nein |
Siehe Fehlerbehandlung für die Arbeit mit Fehlern.