JSON: cos'è, struttura dei dati e principio di funzionamento

Autore: IT Sectr Pubblicato: 2026-03-08 Tempo di lettura: 8 min

JSON (JavaScript Object Notation) è un formato di scambio dati basato su testo, fondato sulla sintassi degli oggetti JavaScript. È utilizzato ovunque: dalle API REST e file di configurazione all'archiviazione dei dati in database e applicazioni mobili. Secondo il sito ufficiale di JSON, il formato è indipendente dal linguaggio e supportato da praticamente tutte le piattaforme moderne. JSON è diventato lo standard de facto per il trasferimento di dati tra client e server.

Punti chiave

  • JSON — un formato testuale leggero per dati strutturati basato sulla sintassi JavaScript
  • Sei tipi di dati — stringa, numero, booleano, null, array e oggetto per qualsiasi struttura
  • Universalità — supportato da tutti i linguaggi di programmazione e piattaforme
  • API REST — il formato principale per lo scambio di dati in applicazioni web e mobili
  • Leggibilità umana — sintassi semplice facile da leggere e modificare senza strumenti

Cos'è JSON?

JSON è un formato testuale per rappresentare dati strutturati, basato sulla sintassi JavaScript. Nonostante le sue origini in JavaScript, il formato è completamente indipendente dal linguaggio — parser e serializzatori esistono per tutti i linguaggi di programmazione popolari.

La storia di JSON è iniziata nei primi anni 2000, quando Douglas Crockford ha estratto un sottoinsieme della sintassi JavaScript per lo scambio di dati. Nel 2013, il formato è stato standardizzato come ECMA-404, e successivamente come ISO/IEC 21778:2017. Il nome sta per JavaScript Object Notation.

Il principale vantaggio di JSON è la sua sintassi minimalista. Vengono utilizzati solo sei tipi per descrivere i dati: stringa, numero, booleano, null, array e oggetto. Questo è sufficiente per rappresentare qualsiasi struttura dati utilizzata nelle applicazioni.

Dove viene utilizzato JSON

  • API REST — il formato principale per richieste e risposte tra server e client
  • File di configurazione — package.json, tsconfig.json, .prettierrc
  • Database — MongoDB, PostgreSQL (JSONB), Firebase Firestore
  • Applicazioni mobili — memorizzazione impostazioni, caching dei dati
  • Tecnologie web — WebSocket, Server-Sent Events, localStorage

Sintassi e tipi di dati JSON

La sintassi JSON è estremamente semplice: i dati sono rappresentati come coppie chiave-valore, dove la chiave è una stringa tra doppi apici e il valore è uno dei sei tipi di base. Gli oggetti sono racchiusi tra parentesi graffe, gli array tra parentesi quadre. Le stringhe devono usare doppi apici; gli apici singoli non sono consentiti.

I numeri in JSON possono essere interi o a virgola mobile, positivi o negativi, con notazione esponenziale. I valori booleani sono rappresentati dai letterali true e false, e l'assenza di valore da null. Gli array contengono un insieme ordinato di valori di qualsiasi tipo, inclusi array e oggetti annidati.

json
{
  "name": "JSON",
  "type": "text",
  "version": 2024,
  "flexible": true,
  "extensions": null,
  "languages": [
    "JavaScript",
    "Python",
    "Java"
  ],
  "nested": {
    "info": "supporto per annidamento"
  }
}
Tipo Esempio Descrizione
Stringa “testo” Tra doppi apici, con sequenze di escape
Numero 42 Intero, virgola mobile, esponenziale
Booleano true true o false — senza apici
null null Assenza di valore
Oggetto {} Insieme non ordinato di coppie chiave-valore
Array [] Elenco ordinato di valori

JSON nelle API REST

JSON è il formato principale di scambio dati per le API REST nello sviluppo mobile e web. Il server invia JSON nel corpo della risposta, il client nel corpo della richiesta. L'intestazione Content-Type standard per JSON è application/json.

Le API REST moderne utilizzano JSON per trasmettere tutti i tipi di dati: da semplici elenchi a strutture annidate complesse con relazioni tra entità. Le librerie client (come Axios in JavaScript o Retrofit su Android) serializzano e deserializzano automaticamente JSON, liberando lo sviluppatore dall'analisi manuale.

Un importante vantaggio di JSON nelle API REST è la possibilità di trasferimento parziale dei dati (risposta parziale) tramite parametri di query, nonché il supporto di risorse annidate senza richieste aggiuntive al server.

Parsing JSON su piattaforme mobili

Il parsing JSON su piattaforme mobili viene eseguito utilizzando strumenti integrati. Android utilizza Gson di Google o Moshi di Square, iOS utilizza il protocollo Codable con JSONDecoder. Ogni piattaforma fornisce strumenti convenienti per convertire JSON in oggetti nativi e viceversa.

JSON su Android (Kotlin)

Su Android, l'approccio popolare utilizza Gson o Moshi. Basta definire una classe dati con annotazioni @SerializedName e chiamare fromJson per la deserializzazione. La libreria mappa automaticamente i nomi dei campi JSON alle proprietà della classe.

kotlin
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String
)

fun parseJson(jsonString: String): User {
    val gson = Gson()
    return gson.fromJson(jsonString, User::class.java)
}

JSON su iOS (Swift)

Su iOS, viene utilizzato il protocollo integrato Codable con JSONDecoder. La struttura dati viene dichiarata come struct conforme a Codable, dopodiché JSON viene analizzato con una singola riga. JSONEncoder esegue la serializzazione inversa — converte un oggetto in JSON per l'invio al server.

swift
import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func parseJSON(from data: Data) throws -> User {
    let decoder = JSONDecoder()
    return try decoder.decode(User.self, from: data)
}

JSON vs XML: confronto dei formati

JSON e XML sono i due principali formati per trasmettere dati strutturati. JSON vince in semplicità e prestazioni, XML in rigore e validazione. La scelta tra loro dipende dai requisiti del progetto: le API REST utilizzano più spesso JSON, i documenti complessi con schemi utilizzano XML.

XML richiede tag di chiusura per ogni elemento, aumentando la dimensione dei dati di 2-3 volte rispetto a JSON. Allo stesso tempo, XML supporta spazi dei nomi, schemi XSD, attributi e trasformazione XSLT, rendendolo più potente per la gestione documentale e l'integrazione di sistemi aziendali.

Caratteristica JSON XML
Sintassi Minimalista, chiave-valore Basata su tag, apertura e chiusura
Dimensione dati Compatta 2-3 volte maggiore di JSON
Tipi di dati Sei tipi di base Solo testo, tipi tramite schemi
Validazione Non integrata, tramite JSON Schema XSD — rigorosa e matura
Spazi dei nomi Nessuno Supporto completo dei namespace
Velocità di parsing Alta Inferiore a causa della complessità

Esempi di lavoro con JSON

Gli esempi mostrano operazioni tipiche con JSON nello sviluppo mobile: parsing di risposte API, creazione di JSON per l'invio e elaborazione di strutture annidate. Comprendere questi schemi è essenziale per qualsiasi sviluppatore di applicazioni mobili.

Serializzazione di un oggetto in JSON

In JavaScript, JSON.stringify converte un oggetto in una stringa JSON. Il secondo argomento può essere un array di chiavi per la serializzazione selettiva o una funzione di sostituzione. Il terzo argomento imposta il rientro per la formattazione.

typescript
interface Order {
  id: string;
  items: OrderItem[];
  total: number;
  createdAt: string;
}

const order: Order = {
  id: 'ord_001',
  items: [{ product: 'phone', quantity: 2 }],
  total: 1599.98,
  createdAt: '2026-07-03T10:00:00Z'
};

const jsonString = JSON.stringify(order, null, 2);

Parsing di JSON annidato

In Kotlin con la libreria Moshi, gli oggetti JSON annidati vengono gestiti tramite classi dati annidate. L'annotazione @Json specifica il nome del campo JSON se differisce dal nome della proprietà della classe. Gli array sono rappresentati come List con il tipo dell'elemento.

kotlin
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class ApiResponse(
    val status: String,
    val data: List<Product>,
    val pagination: Pagination
)

data class Product(
    val id: Int,
    val title: String,
    val price: Double
)

data class Pagination(
    val page: Int,
    val total: Int
)

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

JSON Schema: validazione della struttura

JSON Schema è un linguaggio per descrivere la struttura di un documento JSON, simile a XSD per XML. Usando JSON Schema, è possibile specificare campi obbligatori, tipi di dati, intervalli di valori, pattern di stringhe e struttura annidata. La validazione dello schema rileva errori nei dati prima che vengano elaborati nell'applicazione.

JSON Schema è ampiamente utilizzato in OpenAPI (Swagger) per documentare le API REST, nei moduli di validazione dei dati di input e nei test. Il file dello schema è esso stesso un documento JSON, consentendo ai parser JSON standard di leggerlo. Esistono validatori online e librerie per tutti i linguaggi di programmazione popolari.

Nello sviluppo mobile, JSON Schema viene utilizzato per validare le risposte del server durante i test e per verificare i file di configurazione. Librerie come network-validator su Android e json-schema-validator consentono di incorporare la validazione direttamente nel processo di sviluppo, prevenendo errori nelle fasi iniziali.

Domande frequenti

Quali tipi di dati supporta JSON?

JSON supporta sei tipi: stringa (tra doppi apici), numero (intero e a virgola mobile), booleano (true/false), null, oggetto (coppie chiave-valore in {}) e array (elenco di valori in []). Questo è sufficiente per qualsiasi struttura dati nelle applicazioni.

Si possono usare commenti in JSON?

No, lo standard JSON non supporta i commenti. Se hai bisogno di commenti, usa JSON5 (JSON esteso) o aggiungi un campo di descrizione, ad esempio “_comment”: “spiegazione”. Alcuni strumenti, come VS Code, supportano i commenti nei file JSON di configurazione, ma si tratta di un'estensione non standard.

In cosa JSON differisce da JSONB in PostgreSQL?

JSONB è un formato di archiviazione binario per JSON in PostgreSQL. A differenza del JSON testuale, JSONB è più veloce da elaborare, supporta l'indicizzazione (indici GIN) e garantisce l'unicità delle chiavi. Tuttavia, JSONB occupa più spazio su disco a causa dei metadati aggiunti.

Come verificare se JSON è valido?

Usa JSONLint (jsonlint.com) per una validazione rapida, JSON.parse() integrato in JavaScript con try-catch, o plugin IDE. La validazione include la verifica di apici corretti, chiusura delle parentesi e conformità dei tipi. Per schemi complessi, usa JSON Schema Validator.

Qual è la dimensione massima di un file JSON?

Non c'è limite nella specifica JSON. In pratica, la dimensione è limitata dalla memoria del dispositivo e dalle capacità del parser. Per le applicazioni mobili, si raccomanda di non superare 1-2 MB per risposta e per dati grandi utilizzare la paginazione o lo streaming.

Riepilogo

  • JSON — un formato testuale minimalista con sei tipi di dati per scambiare informazioni strutturate
  • Indipendenza dal linguaggio — parser JSON esistono per tutti i linguaggi di programmazione popolari
  • API REST utilizza JSON come formato standard per richieste e risposte nelle applicazioni mobili
  • Parsing eseguito con strumenti integrati: Gson/Moshi su Android, Codable su iOS
  • JSON è 2-3 volte più compatto di XML, ma inferiore a Protobuf in termini di prestazioni
  • Leggibilità umana — la sintassi è facile da leggere e debuggare senza strumenti speciali
  • JSON Schema — uno strumento aggiuntivo per validare struttura e tipi di dati

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche