formato JSON

formato JSON

formato JSON

JSON È un formato di scambio dati basato su testo, il che significa che è facile da leggere sia per una persona che per un programma. Il suo nome corrisponde all'acronimo inglese di Notazione oggetto JavaScript ed è standardizzato come ECMA-404. Sebbene sia un formato molto vicino nella sintassi a JavaScript, poiché è molto semplice da elaborare per codificare i dati degli oggetti o per ottenerli, viene utilizzato anche in molti altri linguaggi di programmazione (C, C++, Java, Python...) in alternativa, ad esempio, a XML, che ha un obiettivo simile ma, poiché include più metainformazioni, richiede più testo e quindi occupa più spazio, consuma più larghezza di banda e richiede più risorse per codificare e decodificare le informazioni in esso contenute. JSON.

Sommario

    I dati di un oggetto codificati in JSON Sono racchiusi tra parentesi graffe, le diverse proprietà incluse al loro interno sono separate da virgole e i nomi delle proprietà precedono il valore, dal quale sono separati da due punti.

    Cenni sulla sintassi di un oggetto in formato JSON

    I nomi delle proprietà devono essere racchiusi tra virgolette utilizzando virgolette doppie (sebbene alcuni parser supportino le virgolette singole) e sebbene siano consentiti alcuni caratteri speciali per i nomi (come gli accenti), non è consigliabile evitare i criteri di alcuni motori di analisi e evitare conflitti quando si utilizza la proprietà, in particolare con la sintassi punto (oggetto.property).

    Nell'esempio sopra puoi vedere un oggetto che ha sei proprietà con valori semplici, numerici, booleani o di testo; ma nel formato JSON, le proprietà possono anche acquisire come valore un oggetto (compreso l'"oggetto speciale" null) o un array oltre ad una stringa di testo (un testo tra virgolette), un numero (in diversi formati) o un valore booleano (true o false ).

    Come con la lingua JavaScript (JSON è un sottoinsieme di JavaScript) per esprimere una matrice, i suoi valori sono racchiusi tra parentesi quadre e separati da virgole. Il caso più semplice è illustrato nell'esempio seguente; È un array unidimensionale, un vettore, composto da valori numerici.

    En JavaScript Non è necessario che tutti gli elementi di un array siano dello stesso tipo, si possono mischiare, ad esempio, stringhe di testo e valori numerici. Un vettore, un array unidimensionale, può anche essere uno degli elementi di un altro array, consentendo la costruzione di array multidimensionali di lunghezza variabile. L'esempio seguente mostra un oggetto con tre proprietà: la prima un array bidimensionale di lunghezze fisse, la seconda lunghezze variabili e la terza formata da un array con valori di diverso tipo.

    L'esempio seguente utilizza altri oggetti come valori per le proprietà dell'oggetto padre. Non esiste alcun limite al livello di nidificazione quindi, a loro volta, gli oggetti che sono valori di proprietà del genitore possono avere anche altri oggetti come valori di proprietà e così via.

    Proprio come succede con JavaScript, i codici di escape vengono utilizzati per includere determinati caratteri all'interno di una stringa di testo. Il modo più generico è utilizzare codici unicode espressi con la barra di escape, la lettera u e quattro cifre esadecimali con il formato "\u263A" per fare riferimento ad esempio a ☺.

    I caratteri standard, presenti nella maggior parte dei linguaggi (simili al C) sono i seguenti

    • regresso \b Codice ASCII 8 (0x08)
    • Tabulatore \t Codice ASCII 9 (0x09) Solitamente è rappresentato come HT (tabulatore orizzontale)
    • Nuova linea \n Codice ASCII 10 (0x0A) Solitamente è rappresentato come LF (line feed)
    • Nuova pagina \f Codice ASCII 12 (0x0C) Solitamente rappresentato come FF (avanzamento modulo)
    • ritorno \r Codice ASCII 13 (0x0D) Solitamente è rappresentato come CR (ritorno a capo)
    • citazioni \" Codice ASCII 34 (0x22)
    • barra divisa \/ Codice ASCII 57 (0x2F)
    • Barra invertita \\ Codice ASCII 134 (0x5°C)
    • codice unicode \uXXXX

    Derivato da C (e relativo a Unix e simili, come GNU / Linux) la fine della riga è solitamente rappresentata con \n ed è quello che deve essere scelto JSON ma è interessante ricordare che alcuni sistemi operativi preferiscono altre alternative. Windows solitamente rappresenta con \r\n terminazioni di riga e Mac OS (prima di OS \r

    Per quanto riguarda il formato numerico, il riferimento è anche JavaScript. Il separatore decimale è il punto, il trattino (ASCII 45 0x2D) viene utilizzato come segno negativo e il notazione in forma esponenziale (Notazione scientifica) utilizza E come indicatore (che può essere maiuscolo o minuscolo)

    Come ho detto all'inizio, per utilizzare i dati, che saranno stati ottenuti sotto forma di testo, i diversi linguaggi di programmazione dispongono di funzioni di analisi e assegnazione. L'esempio seguente mostra come verrebbero utilizzati JavaScript. Per poterlo utilizzare da una console è inclusa l'assegnazione dei dati JSON Per evitare possibili errori dipendenti dallo standard ECMA utilizzato dall'interprete JavaScript viene effettuata l'assegnazione dell'oggetto JSON in un'unica riga. Edizione 6 del 2016 (ECMA-262) supporta stringhe multilinea, l'edizione 5 (fino al 2011) deve aggiungere il codice di escape \ e in quelli precedenti devi risolverlo a mano o utilizzare una sola riga.

    Un avvertimento per non confondere i nuovi utenti JavaScript. All'interno del codice JavaScript Non è necessario utilizzare una stringa di testo per creare un oggetto, nell'esempio precedente viene utilizzata per simulare i dati che arrivano, ad esempio, da un server. Per assegnare un oggetto a una variabile, qualcosa del tipo:

    Tale oggetto potrebbe essere convertito in testo, ad esempio, con la funzione stringify come segue:

    Il formato JSON È abbastanza flessibile ma, soprattutto perché è basato su testo per essere leggibile dall'uomo, presenta alcuni inconvenienti. Il primo è che richiede più memoria e consuma più larghezza di banda di quanto sia essenziale. Negli esempi precedenti è stato utilizzato un formato che mira ad essere più leggibile che economico, quindi non sono un esempio di risparmio, anche se ci sono molti elementi del formato (parentesi graffe, quadre, virgolette...) che potrebbero continuano a consumare risorse rispetto alle informazioni rappresentate in formato grezzo.

    Il secondo problema si pone quando si ha a che fare con dati puramente binari (ad esempio immagini), quando si tratta di porzioni piccole si può risolvere con quanto spiegato per risolvere la formattazione dei caratteri speciali, ma se si tratta di codificare informazioni di determinate dimensioni, sarà necessario incorporarlo all'interno del Format JSON utilizzando un altro formato di testo. La codifica più utilizzata per risolvere questo aspetto è Base64 poiché molte lingue dispongono di librerie per convertire le informazioni in una direzione o nell'altra. Se i dati da manipolare sono prevalentemente di questo tipo e/o non è necessario che una persona interpreti le informazioni senza un programma, vale la pena considerare se il formato JSON è il più adatto.

    Invia commento

    Potresti aver perso