Lua Academy · Les

Tabellen naar JSON coderen

Serialiseer Lua-gegevens.

Les 3 van 413 stappen

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))               -- unreliable

JSON 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.

Gratis beginnen

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

  1. Waarom JSON
  2. JSON naar tabellen decoderen
  3. Tabellen naar JSON coderen
  4. Geneste gegevens afhandelen
← Terug naar Lua Academy