Dekod JSON til tabeller
Pars JSON-strenge.
Dekod JSON til tabeller er en gratis Lua Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lua Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lua Academy-kurset indeholder 4 lektioner i alt.
Grundlæggende afkodning
Afkodning omdanner en JSON-streng til en Lua-værdi, som du kan arbejde med. Indgangspunktet er json.decode(text).
Hvis JSON-dataene på øverste niveau er et objekt, får du en Lua-tabel med strengnøgler. Hvis de er en tabel, får du en tabel med numeriske indeks.
local json = require("dkjson")
local data = json.decode('{"id": 7}')
print(data.id)Læsning af objektfelter
Et afkodet JSON-objekt fungerer som enhver anden Lua-tabel. Du får adgang til værdier med punktum- eller klammeparentesnotation.
Nøgler, der ikke er gyldige Lua-identifikatorer, f.eks. nøgler med mellemrum, kræver klammeparentesnotation.
local json = require("dkjson")
local u = json.decode('{"name": "Mia", "full name": "Mia Lee"}')
print(u.name)
print(u["full name"])Afkodning af tabeller
En JSON-tabel afkodes til en Lua-sekvenstabel med indeks fra 1. Du gennemløber den med ipairs eller en numerisk løkke.
Husk, at Lua-tabeller starter ved indeks 1, ikke 0.
local json = require("dkjson")
local nums = json.decode('[10, 20, 30]')
for i, v in ipairs(nums) do
print(i, v)
endTal og boolske værdier
JSON-tal afkodes til Lua-tal, og JSON true/false afkodes til Lua-boolske værdier.
Efter afkodningen kan du bruge dem direkte i aritmetik eller betingelser.
local json = require("dkjson")
local d = json.decode('{"qty": 3, "paid": false}')
if not d.paid then
print("unpaid, qty =", d.qty)
endHåndtering af null
JSON null er vanskelig at håndtere, fordi Lua nil fjerner en nøgle fra en tabel. Biblioteker håndterer dette forskelligt.
dkjson afkoder null til en markørværdi, json.null, så nøglen stadig findes. Sammenlign med den for at registrere null-værdier.
local json = require("dkjson")
local d = json.decode('{"mid": null}')
if d.mid == json.null then
print("mid is null")
endAfkodning fra en fil
Ofte ligger JSON-dataene i en fil. Læs hele filen ind i en streng, og afkod den derefter.
Denne fremgangsmåde er almindelig, når du indlæser konfiguration eller en gemt spiltilstand.
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 tre returværdier
dkjsons decode returnerer op til tre værdier: det afkodede resultat, positionen hvor fortolkningen stoppede, og en fejlmeddelelse.
Ved succes er resultatet forskelligt fra nil. Ved fejl er det nil, og den tredje værdi forklarer hvorfor.
local json = require("dkjson")
local obj, pos, err = json.decode('{"a":1}')
print(obj.a, pos, err)Validering af inddata
Stol aldrig blindt på ekstern JSON. Kontrollér altid resultatet, før du bruger det, så fejlagtige data ikke får dit program til at gå ned.
local json = require("dkjson")
local function safeDecode(s)
local v, _, err = json.decode(s)
if not v then return nil, err end
return v
endForskelle ved cjson
lua-cjson fungerer på samme måde, men udløser en fejl ved ugyldige inddata i stedet for at returnere fejlen. Pak det ind i pcall for at gøre det sikkert.
cjson er hurtigere, hvilket er vigtigt ved fortolkning af store datamængder.
local cjson = require("cjson")
local ok, data = pcall(cjson.decode, '{"x":1}')
if ok then print(data.x) else print("error") endManglende nøgler er nil
Hvis du læser en nøgle, der ikke fandtes i JSON-dataene, returnerer Lua ganske enkelt nil. Det er normalt og udløser ikke en fejl.
Brug en reserveværdi med or til at angive standardværdier for valgfrie felter.
local json = require("dkjson")
local d = json.decode('{"name": "Sam"}')
local age = d.age or 0
print(d.name, age)Tomme tabeller er tvetydige
Både et tomt JSON-objekt {} og en tom JSON-tabel [] afkodes til en tom Lua-tabel. Efter afkodningen kan du ikke se, hvilken af de to det var.
Det har primært betydning, når du koder dataene igen. Husk tvetydigheden ved tur-retur-forløb.
Hurtigt tjek
Kontrollér, hvad du har lært om afkodning af JSON.
Opsummering
Afkodning konverterer JSON-tekst til Lua-tabeller, hvor objekter bliver til tabeller med strengnøgler, og tabeller bliver til sekvenser med indeks fra 1.
Validér altid resultatet, håndtér null via bibliotekets markørværdi, og husk, at manglende nøgler ganske enkelt er nil. I næste afsnit koder du Lua-tabeller tilbage til JSON.
Lær Lua med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 40
- Lektioner
- 159
Ofte stillede spørgsmål
Er lektionen “Dekod JSON til tabeller” gratis?
Ja — alle 3 lektioner i læringssporet Lua Academy, inklusive “Dekod JSON til tabeller”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lua Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Dekod JSON til tabeller”?
Pars JSON-strenge. Du øver dig i Lua Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lua Academy?
Der kræves ingen tidligere erfaring. Lua Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Dekod JSON til tabeller”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lua Academy-lektion?
Ja. Alle Lua Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Hvorfor JSON
- Dekod JSON til tabeller
- Kod tabeller til JSON
- Håndtér indlejrede data