Tabellen naar JSON coderen
Serialiseer Lua-gegevens.
Tabellen naar JSON coderen is een gratis Lua Academy-les op CoddyKit. Dit is les 3 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 coderen
Coderen is het omgekeerde van decoderen: het zet een Lua-tabel om in een JSON-tekenreeks. Roep json.encode(table) aan.
Het resultaat is één tekenreeks op één regel die je naar een bestand kunt schrijven of via het netwerk kunt versturen.
local json = require("dkjson")
local t = { name = "Leo", age = 9 }
print(json.encode(t))Objecten versus arrays
De manier waarop een Lua-tabel wordt gecodeerd, hangt af van de sleutels. Een tabel met opeenvolgende gehele getalsleutels vanaf 1 wordt een JSON-array.
Een tabel met tekenreekssleutels wordt een JSON-object. Gemengde tabellen zijn dubbelzinnig en kun je beter vermijden.
local json = require("dkjson")
print(json.encode({ 1, 2, 3 })) -- [1,2,3]
print(json.encode({ a = 1, b = 2 })) -- {"a":1,"b":2}Leesbare opmaak
Standaard is JSON compact. Met dkjson kun je de uitvoer leesbaarder laten inspringen door een optietabel met indent = true door te geven.
Leesbare uitvoer is handig voor configuratiebestanden die mensen zelf bewerken.
local json = require("dkjson")
local t = { name = "Ann", roles = { "dev", "lead" } }
print(json.encode(t, { indent = true }))Getallen en booleans coderen
Lua-getallen en booleaanse waarden worden rechtstreeks naar hun JSON-tegenhangers gecodeerd. Zowel gehele getallen als kommagetallen worden JSON-getallen.
local json = require("dkjson")
local t = { count = 5, ratio = 1.5, active = true }
print(json.encode(t))Het nil-probleem
Je kunt nil niet in een tabel opslaan om JSON null aan te duiden, omdat het toewijzen van nil de sleutel volledig verwijdert.
Gebruik de bibliotheeksentinel json.null als waarde om een letterlijke null uit te voeren.
local json = require("dkjson")
local t = { middle = json.null }
print(json.encode(t)) -- {"middle":null}Arrays met gaten gaan mis
Als een reeks een gat bevat, bijvoorbeeld als index 2 nil is, behandelt Lua deze niet langer als een nette array. Het coderen kan bij het gat stoppen of zich onverwacht gedragen.
Houd array-indexen aaneengesloten en laat ze bij 1 beginnen voor voorspelbare JSON-arrays.
local json = require("dkjson")
local t = { [1] = "a", [3] = "c" } -- gap at 2
print(json.encode(t)) -- unreliableJSON naar een bestand schrijven
Om gegevens blijvend op te slaan, codeer je de tabel naar een tekenreeks en schrijf je die tekenreeks naar een bestand.
Zo sla je instellingen, scores of elke andere gestructureerde toestand op.
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()Lege tabel wordt standaard een object
Een lege Lua-tabel {} heeft geen sleutels. Daarom codeert dkjson deze standaard als een leeg object {}, niet als een array.
Als je een lege array nodig hebt, kun je de tabel met dkjson markeren; anders is het type dubbelzinnig.
local json = require("dkjson")
print(json.encode({})) -- {}Volgorde van sleutels is niet gegarandeerd
Lua-tabellen hebben geen vaste volgorde voor tekenreekssleutels, dus de volgorde van velden in de gecodeerde JSON kan variëren.
Vertrouw niet op de veldvolgorde; JSON-gebruikers moeten sleutels op naam opzoeken, niet op positie.
Consistentie van de heen-en-terugvertaling
Coderen en daarna decoderen moet een gelijkwaardige tabel opleveren. Deze heen-en-terugvertaling is een goede manier om je verwerking van gegevens te 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])Coderen met cjson
lua-cjson biedt ook encode. Het is sneller, maar heeft minder opmaakopties en genereert fouten in plaats van ze terug te geven.
Voor mooi ingesprongen uitvoer is dkjson meestal de gebruiksvriendelijkere keuze.
local cjson = require("cjson")
local s = cjson.encode({ ok = true, n = 42 })
print(s)Korte controle
Test je begrip van het coderen van Lua-tabellen.
Samenvatting
Coderen zet Lua-tabellen om in JSON-tekenreeksen. Reeksen met gehele getallen als sleutels worden arrays en tabellen met tekenreekssleutels worden objecten.
Gebruik json.null voor letterlijke nulls, houd arrays aaneengesloten en geef indent = true door voor leesbare uitvoer. Vervolgens ga je aan de slag met diep geneste gegevens.
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 “Tabellen naar JSON coderen” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Lua Academy, waaronder “Tabellen naar JSON coderen”, 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 “Tabellen naar JSON coderen”?
Serialiseer Lua-gegevens. 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 3 van 4.
Hoe lang duurt de les “Tabellen naar JSON coderen”?
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