Perché JSON
Fondamenti dell'interscambio dei dati.
Perché JSON è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 1 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.
Che cos'è JSON?
JSON (JavaScript Object Notation) è un formato testuale leggero per archiviare e scambiare dati. È leggibile dagli esseri umani e indipendente dal linguaggio.
Quasi tutte le API web, i file di configurazione e i database utilizzano JSON. Imparare a convertire JSON in tabelle Lua e viceversa consente agli script di comunicare con il mondo esterno.
JSON è simile a Lua
Gli oggetti JSON usano parentesi graffe con coppie chiave-valore, mentre gli array usano parentesi quadre. Questa struttura corrisponde quasi perfettamente alle tabelle Lua.
Un oggetto JSON diventa una tabella Lua con chiavi stringa; un array JSON diventa una tabella Lua con indici numerici a partire da 1.
-- JSON text
-- {"name": "Ada", "age": 36}
-- Equivalent Lua table
local person = { name = "Ada", age = 36 }
print(person.name)Lua non include JSON integrato
A differenza di alcuni linguaggi, Lua standard non include il supporto per JSON. È necessario utilizzare una libreria.
Le due scelte più comuni sono dkjson (Lua puro, facile da installare) e lua-cjson (una libreria C veloce). Entrambe espongono le funzioni encode e decode.
Caricare una libreria JSON
Si carica una libreria JSON con require, proprio come qualsiasi altro modulo Lua. La tabella restituita contiene le funzioni necessarie.
Qui viene caricato dkjson e associato a una variabile locale chiamata json.
local json = require("dkjson")
-- now json.encode and json.decode are readyLe due operazioni fondamentali
Con JSON si eseguono essenzialmente solo due operazioni: decode e encode.
La Decoding trasforma una stringa JSON in una tabella Lua che è possibile leggere. L'Encoding trasforma una tabella Lua di nuovo in una stringa JSON da inviare o salvare.
local json = require("dkjson")
local t = json.decode('{"ok": true}') -- string -> table
local s = json.encode(t) -- table -> stringUn esempio di decode
Quando si riceve del testo JSON da un file o da un'API, json.decode lo analizza trasformandolo in una tabella Lua utilizzabile.
Dopo la decodifica, è possibile accedere ai campi con la normale sintassi Lua.
local json = require("dkjson")
local text = '{"city": "Oslo", "temp": 7}'
local data = json.decode(text)
print(data.city, data.temp)Un esempio di encode
Per creare JSON, compili una tabella Lua e la passi a json.encode. Il risultato è una stringa pronta per essere scritta o trasmessa.
local json = require("dkjson")
local book = { title = "Lua", pages = 328 }
local text = json.encode(book)
print(text)Tipi di dati JSON
JSON supporta un insieme limitato di tipi: stringhe, numeri, valori booleani, null, oggetti e array.
Lua li rappresenta con stringhe, numeri, valori booleani, nil e tabelle. Tenga presente che null in JSON non ha un equivalente perfetto in Lua, il che può causare sorprese.
Perché scegliere JSON invece di formati personalizzati
Potrebbe inventare un formato testuale personalizzato, ma JSON è già compreso ovunque. Gli editor ne evidenziano la sintassi, i validatori lo controllano e gli altri linguaggi lo analizzano immediatamente.
Utilizzare JSON rende i dati portabili e il codice più facile da eseguire il debug.
Casi d'uso comuni
Utilizzerà JSON quando chiama API REST, legge file di configurazione, memorizza risultati nella cache o passa dati tra processi.
In ogni caso lo schema è lo stesso: decodificare il JSON in arrivo in una tabella, lavorarci e quindi codificarlo nuovamente quando è necessario inoltrarlo.
local json = require("dkjson")
-- typical round trip
local data = json.decode(incoming)
data.seen = true
local out = json.encode(data)Gestire gli errori di decodifica
La decodifica può fallire se il testo non è JSON valido. dkjson restituisce il valore, la posizione e un messaggio di errore invece di arrestarsi con un errore.
Controlli sempre se il primo valore restituito è nil prima di utilizzarlo.
local json = require("dkjson")
local data, pos, err = json.decode("{bad")
if not data then
print("Invalid JSON:", err)
endVerifica rapida
Verifichi la sua comprensione delle nozioni di base di JSON in Lua.
Riepilogo
JSON è un formato dati universale che si adatta bene alle tabelle Lua. Lua standard non supporta JSON, quindi è necessario caricare una libreria come dkjson o cjson.
Le due operazioni fondamentali sono json.decode (da stringa a tabella) e json.encode (da tabella a stringa). Nella prossima sezione analizzerà in dettaglio la decodifica del JSON in tabelle.
Domande Frequenti
La lezione «Perché JSON» è gratuita?
Sì — il testo completo di «Perché 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 «Perché JSON»?
Fondamenti dell'interscambio dei dati. 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 1 di 4.
Quanto tempo richiede la lezione «Perché 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.