Hvorfor JSON
Grundlæggende dataudveksling.
Hvorfor JSON er en gratis Lua Academy-lektion på CoddyKit. Dette er lektion 1 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.
Hvad er JSON?
JSON (JavaScript Object Notation) er et let tekstformat til lagring og udveksling af data. Det er let for mennesker at læse og uafhængigt af programmeringssprog.
Næsten alle web-API'er, konfigurationsfiler og databaser kan håndtere JSON. Når du lærer at konvertere mellem JSON og Lua-tabeller, kan dine scripts kommunikere med omverdenen.
JSON ligner Lua
JSON-objekter bruger krøllede parenteser med nøgleværdi-par, mens tabeller bruger firkantede parenteser. Det svarer næsten perfekt til Lua-tabeller.
Et JSON-objekt bliver til en Lua-tabel med strengnøgler, og en JSON-tabel bliver til en Lua-tabel med numeriske indeks, der starter ved 1.
-- JSON text
-- {"name": "Ada", "age": 36}
-- Equivalent Lua table
local person = { name = "Ada", age = 36 }
print(person.name)Lua har ingen indbygget JSON-understøttelse
I modsætning til nogle andre sprog leveres standard-Lua ikke med JSON-understøttelse. Du skal bruge et bibliotek.
De to mest almindelige valg er dkjson (ren Lua, nemt at installere) og lua-cjson (et hurtigt C-bibliotek). Begge stiller funktionerne encode og decode til rådighed.
Indlæsning af et JSON-bibliotek
Du indlæser et JSON-bibliotek med require, ligesom ethvert andet Lua-modul. Den returnerede tabel indeholder de funktioner, du har brug for.
Her indlæser vi dkjson og knytter det til en lokal variabel med navnet json.
local json = require("dkjson")
-- now json.encode and json.decode are readyDe to grundlæggende handlinger
Der er kun to ting, du nogensinde gør med JSON: decode og encode.
Afkodning omdanner en JSON-streng til en Lua-tabel, som du kan læse. Kodning omdanner en Lua-tabel tilbage til en JSON-streng, som du kan sende eller gemme.
local json = require("dkjson")
local t = json.decode('{"ok": true}') -- string -> table
local s = json.encode(t) -- table -> stringEt eksempel på afkodning
Når du modtager JSON-tekst fra en fil eller en API, fortolker json.decode den til en anvendelig Lua-tabel.
Efter afkodningen får du adgang til felter med normal Lua-syntaks.
local json = require("dkjson")
local text = '{"city": "Oslo", "temp": 7}'
local data = json.decode(text)
print(data.city, data.temp)Et eksempel på kodning
Hvis du vil opbygge JSON, udfylder du en Lua-tabel og giver den videre til json.encode. Resultatet er en streng, der er klar til at blive skrevet eller sendt.
local json = require("dkjson")
local book = { title = "Lua", pages = 328 }
local text = json.encode(book)
print(text)JSON-datatyper
JSON understøtter et lille antal typer: strenge, tal, boolske værdier, null, objekter og tabeller.
Lua knytter disse til strenge, tal, boolske værdier, nil og tabeller. Bemærk, at JSON null ikke har en perfekt Lua-ækvivalent, hvilket kan give overraskelser.
Hvorfor JSON frem for egne formater
Du kunne opfinde dit eget tekstformat, men JSON forstås allerede overalt. Redigeringsprogrammer fremhæver det, validatorer kontrollerer det, og andre sprog fortolker det med det samme.
Ved at bruge JSON bliver dine data portable, og din kode bliver lettere at fejlfinde.
Almindelige anvendelser
Du vil typisk bruge JSON, når du kalder REST-API'er, læser konfigurationsfiler, gemmer resultater i en cache eller sender data mellem processer.
I hvert tilfælde er fremgangsmåden den samme: afkod indkommende JSON til en tabel, arbejd med den, og kod den derefter tilbage, når du har brug for at sende den videre.
local json = require("dkjson")
-- typical round trip
local data = json.decode(incoming)
data.seen = true
local out = json.encode(data)Håndtering af afkodningsfejl
Afkodningen kan mislykkes, hvis teksten ikke er gyldig JSON. dkjson returnerer værdien, en position og en fejlmeddelelse i stedet for at gå ned.
Kontrollér altid, om den første returværdi er nil, før du bruger den.
local json = require("dkjson")
local data, pos, err = json.decode("{bad")
if not data then
print("Invalid JSON:", err)
endHurtigt tjek
Test din forståelse af det grundlæggende i JSON i Lua.
Opsummering
JSON er et universelt dataformat, der let kan knyttes til Lua-tabeller. Standard-Lua mangler JSON-understøttelse, så du skal indlæse et bibliotek som dkjson eller cjson.
De to grundlæggende handlinger er json.decode (streng til tabel) og json.encode (tabel til streng). I næste afsnit afkoder du JSON til tabeller i detaljer.
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 “Hvorfor JSON” gratis?
Ja — alle 3 lektioner i læringssporet Lua Academy, inklusive “Hvorfor JSON”, 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 “Hvorfor JSON”?
Grundlæggende dataudveksling. 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 1 af 4.
Hvor lang tid tager lektionen “Hvorfor JSON”?
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.