JSON naar tabellen decoderen
Parse JSON-strings.
JSON naar tabellen decoderen is een gratis Lua Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Lua Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Lua Academy bevat in totaal 4 lessen.
De basis van decoderen
Decoderen zet een JSON-tekenreeks om in een Lua-waarde waarmee je kunt werken. Het beginpunt is json.decode(text).
Als de JSON op het hoogste niveau een object is, krijg je een Lua-tabel met tekenreekssleutels; als het een array is, krijg je een tabel met numerieke indexen.
local json = require("dkjson")
local data = json.decode('{"id": 7}')
print(data.id)Velden van objecten lezen
Een gedecodeerd JSON-object gedraagt zich als elke Lua-tabel. Je leest waarden met punt- of haakjessyntaxis.
Voor sleutels die geen geldige Lua-identifiers zijn, zoals sleutels met spaties, heb je haakjessyntaxis nodig.
local json = require("dkjson")
local u = json.decode('{"name": "Mia", "full name": "Mia Lee"}')
print(u.name)
print(u["full name"])Arrays decoderen
Een JSON-array wordt gedecodeerd naar een Lua-sequentietabel met indexen vanaf 1. Je doorloopt die met ipairs of een numerieke lus.
Onthoud: Lua-arrays beginnen bij index 1, niet bij 0.
local json = require("dkjson")
local nums = json.decode('[10, 20, 30]')
for i, v in ipairs(nums) do
print(i, v)
endGetallen en booleaanse waarden
JSON-getallen worden gedecodeerd naar Lua-getallen en JSON true/false naar Lua-booleaanse waarden.
Na het decoderen kun je ze rechtstreeks gebruiken in berekeningen of voorwaardelijke opdrachten.
local json = require("dkjson")
local d = json.decode('{"qty": 3, "paid": false}')
if not d.paid then
print("unpaid, qty =", d.qty)
endnull afhandelen
JSON null is lastig, omdat Lua nil een sleutel uit een tabel verwijdert. Bibliotheken gaan hier verschillend mee om.
dkjson decodeert null naar een sentinelwaarde json.null, zodat de sleutel blijft bestaan. Vergelijk de waarde hiermee om null-waarden te herkennen.
local json = require("dkjson")
local d = json.decode('{"mid": null}')
if d.mid == json.null then
print("mid is null")
endDecoderen vanuit een bestand
Vaak staat de JSON in een bestand. Lees het volledige bestand in een tekenreeks en decodeer die daarna.
Dit patroon wordt vaak gebruikt om configuratie of opgeslagen speltoestanden te laden.
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)De drie teruggegeven waarden
De decode-functie van dkjson geeft maximaal drie waarden terug: het gedecodeerde resultaat, de positie waar het ontleden is gestopt en een foutmelding.
Bij succes is het resultaat niet nil; bij een fout is het nil en legt de derde waarde uit waarom.
local json = require("dkjson")
local obj, pos, err = json.decode('{"a":1}')
print(obj.a, pos, err)Invoer valideren
Vertrouw externe JSON nooit zonder controle. Controleer altijd het resultaat voordat je het gebruikt, zodat een ongeldig gegevenspakket je programma niet laat vastlopen.
local json = require("dkjson")
local function safeDecode(s)
local v, _, err = json.decode(s)
if not v then return nil, err end
return v
endVerschillen met cjson
lua-cjson werkt op vergelijkbare wijze, maar veroorzaakt een fout bij ongeldige invoer in plaats van die terug te geven. Wikkel het voor de veiligheid in pcall.
cjson is sneller, wat belangrijk is bij het ontleden van grote hoeveelheden gegevens.
local cjson = require("cjson")
local ok, data = pcall(cjson.decode, '{"x":1}')
if ok then print(data.x) else print("error") endOntbrekende sleutels zijn nil
Als je een sleutel leest die niet in de JSON stond, geeft Lua eenvoudig nil terug. Dat is normaal en veroorzaakt geen fout.
Gebruik met or een terugvalwaarde om standaardwaarden voor optionele velden op te geven.
local json = require("dkjson")
local d = json.decode('{"name": "Sam"}')
local age = d.age or 0
print(d.name, age)Lege tabellen zijn dubbelzinnig
Zowel een leeg JSON-object {} als een lege array [] wordt naar een lege Lua-tabel gedecodeerd. Na het decoderen kun je niet meer zien welke van de twee het was.
Dit is vooral van belang wanneer je de tabel opnieuw codeert; houd rekening met deze dubbelzinnigheid bij heen-en-terugconversies.
Korte controle
Controleer wat je hebt geleerd over het decoderen van JSON.
Samenvatting
Decoderen zet JSON-tekst om in Lua-tabellen: objecten worden tabellen met tekenreekssleutels en arrays worden reeksen met indexen vanaf 1.
Valideer het resultaat altijd, handel null af met de sentinelwaarde van de bibliotheek en onthoud dat ontbrekende sleutels eenvoudigweg nil zijn. Hierna leer je hoe je Lua-tabellen weer naar JSON codeert.
Leer Lua met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 40
- Lessen
- 159
Veelgestelde vragen
Is de les “JSON naar tabellen decoderen” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “JSON naar tabellen decoderen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Lua Academy bevat in totaal 4 lessen.
Wat leer ik in “JSON naar tabellen decoderen”?
Parse JSON-strings. Je oefent met Lua Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Lua Academy te beginnen?
Ervaring vooraf is niet nodig. Lua Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “JSON naar tabellen decoderen”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Lua Academy?
Ja. Elke les over Lua Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Waarom JSON
- JSON naar tabellen decoderen
- Tabellen naar JSON coderen
- Geneste gegevens afhandelen