CodeGym /Corsi /JAVA 25 SELF /Fondamenti di JSON: struttura, sintassi, vantaggi

Fondamenti di JSON: struttura, sintassi, vantaggi

JAVA 25 SELF
Livello 46 , Lezione 0
Disponibile

1. Che cos’è JSON (JavaScript Object Notation)?

JSON (si pronuncia «jason», non «zheson»!) sta per JavaScript Object Notation. Nonostante la parola «JavaScript» nel nome, JSON è un formato universale, supportato praticamente da tutti i linguaggi di programmazione, inclusa Java.

JSON è stato ideato da Douglas Crockford all’inizio degli anni 2000 come modo semplice di scambiare dati tra browser e server. Prima di allora prevaleva XML — prolisso e sovraccarico di tag.

JSON si è rivelato più compatto, più semplice e facile da leggere a colpo d’occhio. È rapidamente diventato lo standard de facto per lo scambio di dati tra client e server, soprattutto nel web e nelle app mobili.

Perché JSON è diventato lo standard?

  • Semplicità della sintassi — facile da scrivere e leggere a mano.
  • Compattezza — niente tag superflui né fronzoli.
  • Leggibilità — anche un non tecnico capisce cosa succede.
  • Facilità di parsing — la maggior parte dei linguaggi dispone di librerie integrate/di terze parti.
  • Interoperabilità tra linguaggi — Java, Python, Kotlin ecc.: JSON è supportato da tutti.
  • Standard per le REST API — la stragrande maggioranza delle API restituisce JSON.

Confronto con XML

JSON XML
Leggibilità Molto alta Media (molti tag)
Dimensione Compatto Più ingombrante
Parsing Semplice Richiede più sforzo
Estendibilità Supporta annidamento Supporta annidamento
Rigorosità Meno formale Permette di descrivere schemi
Popolarità (2020+) Molto alta Usato, ma meno spesso

JSON vince quasi in tutti i punti. Tuttavia XML rimane attuale dove servono schemi complessi, tipizzazione rigorosa, validazione tramite XSD, supporto di commenti e attributi — ad esempio in sistemi legacy e software bancario.

In pratica, se non scrivete software per una banca o per un’astronave, — usate JSON.

2. Sintassi di base di JSON

Se avete già lavorato con oggetti JavaScript o con dizionari in altri linguaggi, la sintassi vi sembrerà familiare. In Java non esiste un «dizionario» diretto, il suo ruolo è svolto dalle collezioni di java.util, in primo luogo Map<K, V> (più spesso — HashMap<K, V>).

Elementi principali

  • Oggetti — insieme di coppie «chiave: valore», racchiuse tra { }.
  • Array — elenchi ordinati di valori, racchiusi tra [ ].

Esempio di oggetto:

{
  "name": "Alice",
  "age": 25
}

Esempio di array:

[1, 2, 3, 4, 5]

Esempio di oggetto con array:

{
  "students": [
    "Ivan",
    "Maria",
    "John"
  ]
}

Tipi di valori consentiti

In JSON si possono usare solo i seguenti tipi di dati:

Tipo Esempio Descrizione
Stringa
"hello"
Sempre tra doppi apici
Numero
123, 3.14, -7
Interi e decimali
Booleano
true, false
Valori logici
null
null
«Vuoto», assenza di valore
Oggetto
{ ... }
Insieme di coppie «chiave: valore»
Array
[ ... ]
Elenco di valori

Attenzione: le chiavi negli oggetti sono sempre stringhe tra doppi apici, per esempio "name". Gli apici singoli non sono ammessi.

Esempi di JSON valido

{
  "id": 1,
  "name": "Bob",
  "active": true,
  "scores": [10, 20, 30],
  "profile": {
    "email": "bob@example.com",
    "phone": null
  }
}

Esempio di JSON non valido (errori)

{
  name: 'Bob', // Errore: chiavi e stringhe — solo tra doppi apici!
  age: 25,
}

3. Struttura dei dati: annidamento di oggetti e array

JSON supporta un annidamento profondo: oggetti in oggetti, array in oggetti, oggetti in array ecc. È come una matrioska.

Esempio di documento JSON complesso

{
  "university": "Java University",
  "students": [
    {
      "name": "Ivan",
      "age": 20,
      "courses": ["Math", "Java", "English"]
    },
    {
      "name": "Maria",
      "age": 19,
      "courses": ["Biology", "Java", "Art"]
    }
  ],
  "active": true
}

Nell’oggetto radice ci sono il campo stringa "university", il campo booleano "active" e l’array "students", che contiene oggetti studente.

Schema visivo (schema a blocchi)

{
  "chiave": valore,
  "array": [
    { "chiave": valore },
    { "chiave": valore }
  ],
  "oggetto": {
    "chiave": valore
  }
}

4. Vantaggi di JSON

Perché JSON è così popolare?

  1. Facile da leggere per umani e macchine — la struttura è immediata.
  2. Compattezza — minimo di caratteri superflui.
  3. Semplicità di parsing — molte librerie per lettura/scrittura.
  4. Standard per REST API e app mobili — utilizzato ovunque.
  5. Flessibilità — descrive sia elenchi semplici sia strutture ad albero.
  6. Config, impostazioni, archiviazione dati — spesso usato nei file di configurazione.
  7. Supporto in tutti i linguaggi — Java, Python, Go, Rust ecc.

5. Pratica: analisi di esempi di file JSON

Esempio 1: elenco di utenti

[
  {
    "id": 1,
    "name": "Alice"
  },
  {
    "id": 2,
    "name": "Bob"
  }
]

È un array in cui ogni elemento è un oggetto utente.

Esempio 2: configurazione di un’applicazione

{
  "debug": true,
  "maxConnections": 100,
  "database": {
    "host": "localhost",
    "port": 5432,
    "user": "admin",
    "password": "qwerty"
  }
}

Oggetto con oggetto annidato "database". Molto simile alle impostazioni reali delle applicazioni.

Esempio 3: errori in JSON

{
  "name": "Alice",
  "age": 25,
} // Errore: virgola superflua prima della parentesi di chiusura!

Ricordate: in JSON non si può mettere la virgola dopo l’ultimo elemento.

Esempio 4: chiavi senza doppi apici

{ name: "Alice", age: 25 } // Errore: le chiavi devono essere tra doppi apici!

6. Sfumature utili

Tabella: cosa si può e cosa non si può in JSON

Si può Non si può
"chiave": "valore"
'chiave': 'valore'
"chiave": 123
"chiave": 0123
"chiave": null
"chiave": undefined
"chiave": true
"chiave": True
"chiave": [1, 2, 3]
"chiave": [1, 2, 3,]

Confronto rapido tra JSON e oggetti Java

Java JSON
int, double, boolean
Numero, true/false
String
"stringa"
List<T>, array [valore1, valore2, ...]
Map<String, Object>
{ "chiave": valore, ... }
null
null
Classe con campi { "campo": valore, ... }

Esempio: classe Java e sua rappresentazione JSON

public class Student {
    public String name;
    public int age;
}
{
  "name": "Alice",
  "age": 20
}

7. Errori tipici nel lavorare con JSON

Errore n. 1: apici singoli al posto dei doppi. JSON accetta solo doppi apici per chiavi e stringhe.

{ 'name': 'Alice' } // Errore!

Errore n. 2: virgola superflua. Non si può mettere la virgola dopo l’ultimo elemento.

{ "name": "Alice", } // Errore!

Errore n. 3: chiavi senza apici. Le chiavi devono sempre essere tra doppi apici.

{ name: "Alice" } // Errore!

Errore n. 4: numeri con zeri iniziali. Tali numeri non sono consentiti.

{ "age": 025 } // Errore!

Errore n. 5: uso di undefined. In JSON non esiste undefined, usare null.

{ "value": undefined } // Errore!

Errore n. 6: True/False con iniziale maiuscola. In JSON esistono solo true e false (minuscoli).

{ "active": True } // Errore!
1
Compito
JAVA 25 SELF, livello 46, lezione 0
Bloccato
Dati magici dell'eroe 🧙‍♂️
Dati magici dell'eroe 🧙‍♂️
1
Compito
JAVA 25 SELF, livello 46, lezione 0
Bloccato
Creazione di una scheda per la biblioteca digitale 📚
Creazione di una scheda per la biblioteca digitale 📚
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION