Cos'è JSON? Una guida in linguaggio semplice con esempi
JSON (JavaScript Object Notation) è un formato di testo semplice per scrivere dati strutturati, come un cliente, un ordine o un elenco di prodotti, come coppie di nomi e valori. È facile da leggere per le persone e facile da produrre e analizzare per i programmi. Quando app e servizi si scambiano dati sul web, JSON è di gran lunga il formato più comune.
Perché JSON conta quando costruisci con l'AI
Incontrerai JSON continuamente, anche se non scrivi mai codice:
- API. Quando le schermate della tua app caricano dati dal backend, o il tuo backend chiama un servizio di pagamento, email o AI, i dati di solito viaggiano in JSON. Vedi cos'è un'API.
- File di impostazioni. Molti file di configurazione dei progetti sono in JSON, per esempio
package.json, che elenca le dipendenze di un progetto JavaScript. - Database. Postgres può salvare JSON in una colonna (il tipo
jsonb) per dati che non si adattano a righe e colonne ordinate. Vedi cos'è Postgres. - Output dell'AI. Quando vuoi che un modello AI restituisca qualcosa che un programma può usare, come un elenco di tag o i campi estratti da una fattura, di solito chiedi JSON.
- Messaggi di errore e log. Molti errori arrivano in JSON, e leggerli è spesso il modo più rapido per capire cosa è andato storto.
Saper leggere JSON ti permette di controllare cosa ha ricevuto davvero la tua app, individuare un campo mancante e descrivere i problemi con precisione al tuo app builder AI.
Un esempio quotidiano
Pensa a un modulo di carta: Nome: ____, Telefono: ____, Newsletter: ☐ sì ☐ no. Ogni voce è un'etichetta con accanto un valore. JSON è quel modulo scritto come testo, con un'impaginazione rigida che un computer può leggere senza indovinare. E come nei moduli, JSON può avere sezioni dentro altre sezioni (un blocco indirizzo con via, città e CAP) ed elenchi (più numeri di telefono).
Com'è fatto JSON
Ecco una singola prenotazione in JSON:
{
"id": 5001,
"customer": "Lena Park",
"service": "Taglio",
"startsAt": "2026-10-03T14:00:00Z",
"price": 35.5,
"paid": false,
"notes": null,
"extras": ["barba", "asciugamano caldo"],
"contact": {
"email": "lena@example.com",
"phone": "+39 02 1234 5678"
}
}
Come leggerla:
- Le parentesi graffe
{ }racchiudono un oggetto, cioè un insieme di coppie nome/valore. - Ogni coppia è
"nome": valore, separate da virgole. - Le parentesi quadre
[ ]racchiudono un array, cioè un elenco ordinato. - Oggetti e array possono stare uno dentro l'altro, come
contactedextras.
I sei tipi di valore
JSON ha solo sei tipi di valore. Questo piccolo elenco è in gran parte il motivo per cui funziona ovunque.
| Tipo | Esempio | Note |
|---|---|---|
| Stringa (testo) | "Lena Park" | Sempre virgolette doppie |
| Numero | 35.5, -2, 1e6 | Senza virgolette; niente simboli di valuta |
| Booleano | true, false | Minuscolo, senza virgolette |
| Null | null | «Nessun valore» |
| Oggetto | { "city": "Leeds" } | Valori con nome |
| Array | [1, 2, 3] | Elenco ordinato; gli elementi possono essere di qualsiasi tipo |
Non esiste un tipo data. Le date si scrivono come stringhe, di solito nel formato ISO 8601 mostrato sopra (2026-10-03T14:00:00Z, dove Z significa UTC). Concordare questo formato evita un'intera categoria di errori legati al fuso orario.
Le regole rigide (da cui nascono gli errori)
JSON è meno tollerante di quanto sembri. Questi esempi sono tutti non validi:
{ name: "Lena" } ← chiave senza virgolette doppie
{ 'name': 'Lena' } ← apici singoli
{ "a": 1, "b": 2, } ← virgola finale
{ "a": 1 "b": 2 } ← virgola mancante
{ "a": 1 // commento } ← i commenti non sono ammessi
La maggior parte degli errori «Unexpected token» che vedrai è uno di questi. Un validatore o formattatore JSON ti mostrerà la riga esatta.
Esempio pratico: JSON attraverso un'app
Un cliente prenota un taglio in un'app per parrucchieri. Ecco dove compare JSON:
- Il modulo di prenotazione invia questo al backend dell'app:
{ "service": "Taglio", "startsAt": "2026-10-03T14:00:00Z", "name": "Lena Park" }
- Il backend salva la prenotazione nel database e risponde con lo stato
201 Createde:
{ "id": 5001, "status": "confirmed" }
- Se l'orario era già occupato, potrebbe rispondere invece con lo stato
409 Conflicte:
{ "error": "slot_taken", "message": "Questo orario è appena stato prenotato. Scegline un altro." }
La pagina legge status o error e mostra il messaggio giusto. Se la pagina mostrasse invece una schermata vuota, aprire gli strumenti per sviluppatori del browser (scheda Network) ti mostrerebbe questo JSON, spesso l'indizio più rapido su cosa è andato storto.
Termini chiave
| Termine | Significato |
|---|---|
| Chiave | Il nome in una coppia nome/valore, come "email". |
| Parsing | Trasformare il testo JSON in dati che un programma può usare. |
| Serializzare / stringify | Trasformare dati in testo JSON per inviarli o salvarli. |
| Payload | I dati inviati in una richiesta o una risposta. |
| Schema | Una descrizione della forma che i dati devono avere: quali campi e quali tipi. JSON Schema è un modo standard per scriverne uno. |
| JSONB | Il tipo di colonna JSON binario di Postgres, che può essere indicizzato e interrogato. |
| NDJSON / JSON Lines | Un oggetto JSON per riga, comune per i log e lo streaming. |
Idee sbagliate comuni
- «JSON è JavaScript». Ha preso la sintassi da JavaScript, ma è indipendente dal linguaggio: Python, Java, C#, Go e tutti gli altri lo leggono.
- «I numeri tra virgolette vanno bene».
"35"è una stringa, non un numero. Mescolarli causa bug come"35" + "5"che diventa"355". Il denaro spesso conviene salvarlo in centesimi interi (3550) per evitare problemi di arrotondamento. - «JSON è sicuro perché sono solo dati». JSON può contenere qualsiasi cosa, compresi i segreti. Non mettere chiavi API in un JSON inviato al browser.
- «Metti tutto in una colonna JSON». Comodo per extra flessibili, ma i dati che cerchi, filtri o unisci di solito appartengono a colonne vere.
- «L'AI restituisce sempre JSON valido». I modelli possono aggiungere testo extra o rompere il formato. Molti provider offrono una modalità di output strutturato; il tuo codice dovrebbe comunque controllare ciò che arriva.
Cosa chiedere al tuo app builder AI
- «Mostrami un esempio del JSON che restituisce questo endpoint.»
- «Restituisci gli errori come JSON con un codice
errore unmessageleggibile.» - «Salva le date come stringhe ISO 8601 in UTC e convertile in ora locale solo a schermo.»
- «Salva i prezzi come centesimi interi.»
- «Valida il JSON in ingresso lato server e rifiuta le richieste con campi mancanti o di tipo sbagliato.»
- «Quando chiami il modello AI, chiedi JSON in questa forma precisa e controllalo prima di usarlo.»
JSON in Mythex
In Mythex non devi scrivere JSON a mano: descrivi ciò che vuoi e l'agente scrive il codice che lo invia e lo legge. Conviene però riconoscerlo: quando qualcosa si rompe, incollare l'errore JSON nella chat dà all'agente un indizio preciso. La ricetta del backend REST API della documentazione chiede fin dall'inizio «errori JSON chiari», e la ricetta integrare qualsiasi API copre le chiamate a servizi esterni. Per il quadro generale, vedi REST vs GraphQL e come fare debug di un'app costruita con l'AI.
Domande
Cos'è JSON in parole semplici?
JSON (JavaScript Object Notation) è un formato di testo semplice per scrivere dati strutturati come nomi e valori, per esempio "name": "Lena". Quasi tutte le API web lo usano per scambiarsi dati, e molte app lo usano per impostazioni e dati salvati.
JSON è un linguaggio di programmazione?
No. JSON è un formato di dati, non un linguaggio. Da solo non può fare nulla: descrive soltanto dei dati. Anche se nasce da JavaScript, praticamente ogni linguaggio di programmazione sa leggerlo e scriverlo.
Qual è la differenza tra JSON e un oggetto JavaScript?
Si assomigliano, ma JSON è più rigido. In JSON ogni chiave deve stare tra virgolette doppie, le stringhe usano virgolette doppie, non ci sono commenti né virgole finali, e i valori sono limitati a stringhe, numeri, true, false, null, oggetti e array.
Perché il mio JSON risulta non valido?
Le cause più comuni sono una virgola finale dopo l'ultimo elemento, apici singoli al posto delle virgolette doppie, una virgola mancante tra gli elementi, una parentesi non chiusa o un commento. Incollalo in un validatore JSON e ti indicherà la riga.