0Pricing
Lua Academy · Lezione

Codificare tabelle in JSON

Serializzi i dati Lua.

Codificare tabelle in JSON è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.

Nozioni di base sulla codifica

La codifica è l'inverso della decodifica: trasforma una tabella Lua in una stringa JSON. Chiami json.encode(table).

Il risultato è una stringa su un'unica riga che può essere scritta in un file o inviata attraverso la rete.

local json = require("dkjson")
local t = { name = "Leo", age = 9 }
print(json.encode(t))

Oggetti e array

Il modo in cui una tabella Lua viene codificata dipende dalle sue chiavi. Una tabella con chiavi intere consecutive a partire da 1 diventa un array JSON.

Una tabella con chiavi stringa diventa un oggetto JSON. Le tabelle miste sono ambigue e andrebbero evitate.

local json = require("dkjson")
print(json.encode({ 1, 2, 3 }))        -- [1,2,3]
print(json.encode({ a = 1, b = 2 }))   -- {"a":1,"b":2}

Formattazione leggibile

Per impostazione predefinita, JSON è compatto. dkjson può indentare l'output per migliorarne la leggibilità passando una tabella di opzioni con indent = true.

L'output formattato è ideale per i file di configurazione che le persone devono modificare.

local json = require("dkjson")
local t = { name = "Ann", roles = { "dev", "lead" } }
print(json.encode(t, { indent = true }))

Codifica di numeri e valori booleani

I numeri e i valori booleani di Lua vengono codificati direttamente nei rispettivi equivalenti JSON. Sia gli interi sia i numeri in virgola mobile diventano numeri JSON.

local json = require("dkjson")
local t = { count = 5, ratio = 1.5, active = true }
print(json.encode(t))

Il problema di nil

Non può memorizzare nil in una tabella per rappresentare JSON null, perché assegnare nil rimuove completamente la chiave.

Per produrre un null letterale, utilizzi il sentinel della libreria json.null come valore.

local json = require("dkjson")
local t = { middle = json.null }
print(json.encode(t))  -- {"middle":null}

Gli array con lacune causano problemi

Se una sequenza presenta una lacuna, ad esempio se l'indice 2 è nil, Lua non la considera più un array regolare. La codifica può interrompersi in corrispondenza della lacuna o comportarsi in modo anomalo.

Mantenga gli indici degli array contigui a partire da 1 per ottenere array JSON prevedibili.

local json = require("dkjson")
local t = { [1] = "a", [3] = "c" }  -- gap at 2
print(json.encode(t))               -- unreliable

Scrivere JSON in un file

Per rendere persistenti i dati, codifichi la tabella in una stringa e scriva quella stringa in un file.

È così che si salvano impostazioni, punteggi o qualsiasi stato strutturato.

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

Una tabella vuota diventa un oggetto per impostazione predefinita

Una tabella Lua vuota {} non contiene chiavi, quindi per impostazione predefinita dkjson la codifica come oggetto vuoto {}, non come array.

Se le serve un array vuoto, dkjson consente di contrassegnare la tabella; in caso contrario, il tipo è ambiguo.

local json = require("dkjson")
print(json.encode({}))  -- {}

L'ordine delle chiavi non è garantito

Le tabelle Lua non hanno un ordine intrinseco per le chiavi stringa, quindi l'ordine dei campi nel JSON codificato può variare.

Non faccia affidamento sull'ordine dei campi: i programmi che consumano JSON dovrebbero cercare le chiavi per nome, non per posizione.

Coerenza del round trip

La codifica seguita dalla decodifica dovrebbe restituire una tabella equivalente. Questo round trip è un buon modo per verificare la gestione dei dati.

local json = require("dkjson")
local orig = { a = 1, list = { 2, 3 } }
local copy = json.decode(json.encode(orig))
print(copy.a, copy.list[2])

Codifica con cjson

lua-cjson offre anche encode. È più veloce, ma offre meno opzioni di formattazione e genera errori invece di restituirli.

Per un output con rientri, dkjson è solitamente la scelta più semplice.

local cjson = require("cjson")
local s = cjson.encode({ ok = true, n = 42 })
print(s)

Verifica rapida

Verifichi la sua comprensione della codifica delle tabelle Lua.

Riepilogo

La codifica trasforma le tabelle Lua in stringhe JSON. Le sequenze con chiavi intere diventano array, mentre le tabelle con chiavi stringa diventano oggetti.

Utilizzi json.null per i valori null letterali, mantenga gli array contigui e passi indent = true per ottenere un output leggibile. Nel prossimo argomento affronterà dati profondamente annidati.

Domande Frequenti

La lezione «Codificare tabelle in JSON» è gratuita?

Sì — il testo completo di «Codificare tabelle in JSON» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.

Cosa imparerò in «Codificare tabelle in JSON»?

Serializzi i dati Lua. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Lua Academy?

Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Codificare tabelle in JSON»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Lua Academy?

Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Perché JSON
  2. Decodificare JSON in tabelle
  3. Codificare tabelle in JSON
  4. Gestire dati annidati
← Torna a Lua Academy