CodeGym /Corsi /C# SELF /Fondamenti del formato JSO...

Fondamenti del formato JSON e la sua popolarità

C# SELF
Livello 43 , Lezione 4
Disponibile

1. Introduzione

Se almeno una volta avete aperto API moderne, lavorato con web-service, app mobili o anche solo provato a salvare qualcosa in un "formato universale" — avete già incontrato o incontrerete il JSON. È quel formato che praticamente "collega" diversi linguaggi di programmazione e perfino piattaforme diverse: C#, JavaScript, Python — tutti parlano usando il JSON.

Perché proprio il JSON è diventato la star della serializzazione? La risposta è semplice: è un formato testuale compatto, leggibile dall'uomo e leggero. La sua popolarità è il risultato della combinazione di semplicità, universalità e ottimo supporto nei linguaggi di programmazione.

Che cos'è JSON?

JSON — è l'abbreviazione di JavaScript Object Notation. Il formato è nato dal mondo JavaScript, ma è rapidamente uscito dal browser per invadere il mondo. Importante: nonostante il nome, JSON non è legato a JavaScript e funziona altrettanto bene con tutti i linguaggi di programmazione.

Il formato è stato inventato all'inizio degli anni 2000 da Douglas Crockford come alternativa più semplice all'XML verboso. L'idea è semplice: «JSON è più corto, più semplice e più facile da leggere».

2. Regole fondamentali del formato JSON

La cosa principale: JSON è un formato testuale con regole rigorose per i dati strutturati. Niente magia, solo testo normale che si può aprire in qualsiasi editor.

Costrutti di base:

  • Array (arrays): elenchi ordinati di valori.
  • Oggetti (objects): insiemi di coppie chiave-valore.
  • Tipi semplici: stringhe, numeri, valori booleani (true, false) e il valore speciale null.

Esempio di documento JSON minimale:

{
    "name": "Ivan",
    "age": 25,
    "isStudent": true,
    "scores": [5, 4, 5, 3],
    "contacts": {
        "email": "ivan@example.com",
        "phone": null
    }
}

Struttura schematica

Ecco una semplice tabella di corrispondenza tra i tipi in C# e la loro rappresentazione in JSON:

Tipo C# Esempio JSON
string
"name": "Ivan"
int, double
"score": 5
bool
"isStudent": true
array (int[], ...)
"scores": [5,4,5,3]
oggetto (class, ...)
"contacts": { ... }
null
"phone": null

Regole di scrittura del JSON

  1. Le stringhe sono sempre con virgolette doppie: 'text' — errore, corretto "text".
  2. Le chiavi degli oggetti sono stringhe tra virgolette doppie: per esempio, "name": ...
  3. Le virgole vanno solo tra gli elementi, senza virgola finale dopo l'ultimo elemento.
  4. Le indentazioni non sono obbligatorie, ma migliorano la leggibilità.
  5. I numeri senza virgolette: "age": 25, non "age": "25".
  6. I booleani sono true/false (senza virgolette), non True, FALSE o "true".
  7. null si scrive null (senza virgolette).

3. JSON visto dal punto di vista del programmatore

Analogie con i tipi C#:

  • JSON-objectDictionary<string, object>
  • JSON-arrayT[] o List<T>
  • JSON-string ≈ stringa normale
  • JSON-numberint o double (a seconda del valore)

Esempio di serializzazione di un oggetto in JSON

Classe:

public class Student
{
    public string Name { get; set; } = "";
    public int Age { get; set; }
    public bool IsStudent { get; set; }
    public int[] Scores { get; set; } = Array.Empty<int>();
}

Il JSON risultante (semplifichiamo, i dettagli della serializzazione più avanti):

{
    "Name": "Ivan",
    "Age": 25,
    "IsStudent": true,
    "Scores": [5, 4, 5, 3]
}

4. Esempi di strutture JSON valide

Oggetto con array e oggetti annidati

{
  "product": "Caffè",
  "price": 125.50,
  "inStock": true,
  "attributes": {
    "weight": 500,
    "unit": "gr"
  },
  "tags": ["bevanda", "energia", "arabica"],
  "promotions": null
}

Array di oggetti

[
  {"id": 1, "name": "Petja"},
  {"id": 2, "name": "Maša"},
  {"id": 3, "name": "Vasja"}
]

5. Esempi di JSON non valido (e perché)

Virgolette singole:

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

JSON richiede le virgolette doppie.

Virgola dopo l'ultimo elemento:

{ "x": 1, "y": 2, } // Errore!

La virgola finale non è permessa.

Commenti:

{
  // Questa bella cosa purtroppo non funziona in JSON
  "name": "Ivan"
}

In JSON non esistono i commenti.

6. Perché JSON è utile nei progetti reali?

Trasferimento dati tra sistemi

JSON è il "linguaggio comune" universale tra programmi diversi, spesso sopra HTTP. Per esempio, un server in C# comunica con il frontend in JavaScript — il formato comune è il JSON.

Salvataggio di impostazioni e dati

Molte applicazioni salvano le impostazioni in file .json. Per esempio, appsettings.json è lo standard per le applicazioni .NET. Vantaggi: facile da leggere, modificare e versionare.

API server e mobile

La maggior parte delle REST API usa JSON come formato per richieste e risposte: per esempio, la lista degli utenti arriva come array di oggetti.

Configurazione di strumenti e librerie

Molti strumenti in .NET (Serilog, Swagger ecc.) usano JSON per le configurazioni. XML si vede sempre meno — JSON è più compatto e più chiaro.

7. Popolarità del JSON: perché tutti lo amano?

  • Leggibilità. Anche chi non è un programmatore capisce la struttura.
  • Comodità nel trasferimento in rete. Testo normale, poco "peso".
  • Supporto in tutti i linguaggi. Serializzazione/deserializzazione spesso "out of the box".
  • Comodo per le configurazioni. Qualsiasi editor ci lavora bene.
  • Semplicità di generazione. Creare JSON è davvero facile.
  • Array, annidamento, null. Tutto intuitivo, senza la "febbre delle parentesi" come con XML.

Quando è meglio scegliere JSON?

  • State creando un'app mobile o web;
  • Lavorate con API di servizi esterni;
  • Volete rendere l'app facilmente integrabile in futuro.

8. Come C# lavora con JSON

Breve panoramica delle librerie .NET popolari:

Esempio minimo di serializzazione/deserializzazione:

using System.Text.Json;

// Convertiamo un oggetto in una stringa JSON
var student = new Student { Name = "Ivan", Age = 25, IsStudent = true, Scores = new[] {5, 4, 5, 3} };
string json = JsonSerializer.Serialize(student);

// E viceversa: leggiamo l'oggetto da una stringa JSON
Student? parsed = JsonSerializer.Deserialize<Student>(json);

Console.WriteLine(json);

9. Errori tipici dei principianti con JSON

Errore comune — confondere le virgolette o dimenticare una virgola. A volte si cerca di aggiungere commenti (come in C# — è comodo!), ma il JSON non li accetta.

Un altro caso frequente — serializzare oggetti con collezioni non inizializzate: si ottiene "scores": null invece dell'array atteso. Inizializzate sempre le collezioni.

Ricordate che JSON è testo: grandi volumi di dati occupano molta memoria. Se serializzate, ad esempio, 500 MB in JSON, l'applicazione può avere un calo significativo delle prestazioni.

1
Sondaggio/quiz
Introduzione alla serializzazione, livello 43, lezione 4
Non disponibile
Introduzione alla serializzazione
Concetto di serializzazione dei dati
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION