In questo articolo, Il formato dati JSON, vediamo come è possibile rappresentare dati con un formato semplice e flessibile: JSON

In questo articolo, Il formato dati JSON, vediamo come è possibile rappresentare dati con un formato semplice e flessibile: JSON

Indice dei contenuti

Cos’è JSON

JSON (JavaScript Object Notation) è un formato di rappresentazione dei dati strutturati, leggero e testuale, ampiamente utilizzato per lo scambio di informazioni tra applicazioni e sistemi informatici. La sua diffusione è dovuta principalmente alla semplicità sintattica, alla facilità di lettura sia per l’uomo sia per le macchine e all’elevata interoperabilità tra linguaggi di programmazione differenti.

JSON consente di descrivere dati strutturati in modo chiaro e compatto, riducendo la complessità rispetto ad altri formati più verbosi. Per questo motivo è oggi lo standard di riferimento nella comunicazione client-server all’interno delle applicazioni Web moderne, in particolare nelle API REST.

La notazione JSON è facile da scrivere, analizzare e interpretare, caratteristiche che ne hanno favorito una rapida adozione da parte degli sviluppatori.


Origine e diffusione di JSON

JSON è stato ideato nei primi anni 2000 da Douglas Crockford con l’obiettivo di semplificare lo scambio di dati tra client e server nelle applicazioni Web. Sebbene si basi su un sottoinsieme della sintassi del linguaggio JavaScript, JSON è completamente indipendente dalla piattaforma e dal linguaggio di programmazione.

Qualsiasi linguaggio in grado di analizzare una stringa di testo può gestire dati in formato JSON. Per questo motivo JSON è oggi utilizzato in numerosi contesti e linguaggi, tra cui Java, Python, PHP, Ruby, C#, Go e molti altri.


Differenze tra XML e JSON

JSON e XML sono entrambi formati utilizzati per lo scambio di dati strutturati, ma presentano differenze significative.

XML è un linguaggio più verboso, basato su tag di apertura e chiusura, e prevede l’uso di strutture aggiuntive come namespace, attributi e schemi. Nei documenti complessi, la lettura e la comprensione della struttura complessiva richiedono spesso un’analisi approfondita dell’intero file.

JSON, invece, utilizza una sintassi molto più compatta e immediata. La struttura dei dati è facilmente comprensibile anche a colpo d’occhio, caratteristica particolarmente utile nei progetti di grandi dimensioni e nei team di sviluppo eterogenei, in cui programmatori che utilizzano linguaggi diversi devono collaborare sullo stesso sistema.

Un ulteriore vantaggio di JSON è la ridotta dimensione dei file rispetto a XML, che si traduce in una comunicazione più efficiente e veloce, soprattutto nelle applicazioni Web e nelle API.


Confronto tra XML e JSON: un esempio

Documento XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<libri>
  <libro>
    <autore>Mark Twain</autore>
    <titolo>Le avventure di Huckleberry Finn</titolo>
    <prezzo>9.90</prezzo>
  </libro>
  <libro>
    <autore>Herman Melville</autore>
    <titolo>Moby Dick</titolo>
    <prezzo>15.10</prezzo>
  </libro>
</libri>

Oggetto JSON equivalente

{
  "libri": {
    "libro": [
      {
        "autore": "Mark Twain",
        "titolo": "Le avventure di Huckleberry Finn",
        "prezzo": 9.90
      },
      {
        "autore": "Herman Melville",
        "titolo": "Moby Dick",
        "prezzo": 15.10
      }
    ]
  }
}

Dal confronto emerge chiaramente come JSON risulti più compatto e leggibile, soprattutto in presenza di strutture annidate.


Struttura del formato JSON

JSON è basato esclusivamente su due strutture fondamentali:

  • un insieme di coppie nome/valore
  • una lista ordinata di valori

Queste due strutture sono sufficienti per rappresentare qualsiasi tipo di dato complesso.


Oggetti letterali JSON

Un oggetto JSON è costituito da un insieme di coppie proprietà: valore, separate da virgole e racchiuse tra parentesi graffe { }.

A differenza di JavaScript, JSON ammette solo valori semplici e atomici:

  • stringhe
  • numeri
  • booleani
  • array
  • oggetti
  • null

Non è possibile includere funzioni o espressioni di codice.


Tipi di dato JSON

Number

JSON supporta esclusivamente numeri in virgola mobile a doppia precisione.
Non sono previsti numeri ottali, esadecimali, NaN o Infinity.

{ "giorniMarzo": 31 }

String

Sequenze di caratteri Unicode racchiuse tra virgolette doppie.

{ "nome": "Mario" }

Boolean

Valori booleani true o false.

{ "promosso": true }

Array

Liste ordinate di valori racchiuse tra parentesi quadre.

{ "numeri": [1, 2, 3, 4] }

Object

Insiemi non ordinati di coppie nome/valore.

{
  "studente": {
    "nome": "Anna",
    "eta": 18
  }
}

Whitespace

Spazi, tabulazioni e ritorni a capo sono ammessi per migliorare la leggibilità.

null

Indica l’assenza di valore.

{ "indirizzo": null }

A cosa serve JSON

JSON è utilizzato in numerosi contesti, tra cui:

  • Comunicazione client/server nel Web, in particolare nelle API REST
  • Archiviazione di dati strutturati, ad esempio file di configurazione
  • Scambio di dati tra linguaggi diversi, grazie alla sua indipendenza dalla piattaforma

Creare, leggere e manipolare file JSON

La creazione di file JSON è semplice e può essere effettuata con un qualsiasi editor di testo. Inoltre, quasi tutti i linguaggi di programmazione mettono a disposizione librerie dedicate per la generazione e la lettura di dati JSON.

Una volta caricati in memoria, i dati JSON possono essere facilmente:

  • letti
  • modificati
  • estesi
  • eliminati

Questa flessibilità rende JSON particolarmente adatto allo sviluppo di applicazioni dinamiche.


JSON e PHP

A partire da PHP 5.2, il supporto a JSON è integrato nativamente tramite due funzioni fondamentali:

  • json_encode()
  • json_decode()

La funzione json_encode()

json_encode() converte una variabile PHP in una stringa JSON.

Esempio con array indicizzato

<?php
$frutta = array("mela", "banana", "arancia", "kiwi");
echo json_encode($frutta);
?>

Output:

["mela","banana","arancia","kiwi"]

Esempio con array associativo

<?php
$persona = array(
  "nome" => "Mario",
  "cognome" => "Rossi",
  "eta" => 30
);
echo json_encode($persona);
?>

Output:

{"nome":"Mario","cognome":"Rossi","eta":30}

Esempio con oggetto PHP

<?php
class Atleta {
  public $nome;
  public $sport;
  public $eta;

  public function __construct($nome, $sport, $eta) {
    $this->nome = $nome;
    $this->sport = $sport;
    $this->eta = $eta;
  }
}

$atleta = new Atleta("Luca", "Calcio", 25);
echo json_encode($atleta);
?>

Output:

{"nome":"Luca","sport":"Calcio","eta":25}

La funzione json_decode()

json_decode() converte una stringa JSON in una variabile PHP.
Per impostazione predefinita restituisce un oggetto, ma può restituire un array associativo se il secondo parametro è impostato a true.

<?php
$json = '{"nome":"Anna","cognome":"Verdi","eta":28}';

$obj = json_decode($json);
echo $obj->nome;

$array = json_decode($json, true);
print_r($array);
?>

Output:

AnnaArray
(
    [nome] => Anna
    [cognome] => Verdi
    [eta] => 28
)

Conclusioni

JSON rappresenta oggi uno degli strumenti fondamentali nello sviluppo delle applicazioni Web moderne. Grazie alla sua semplicità, leggerezza e indipendenza dal linguaggio, è diventato lo standard de facto per lo scambio di dati tra sistemi distribuiti.

La sua integrazione nativa in linguaggi come PHP, JavaScript e Python lo rende uno strumento essenziale per la realizzazione di API, servizi Web e applicazioni dinamiche, costituendo una competenza chiave per chi opera nel settore dell’informatica e delle reti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *