- docx (formato Microsoft Word);
- pdf (formato Adobe);
- mobi (comunemente utilizzato sui dispositivi Amazon Kindle);
- e molto altro (ePub, djvu, fb2, ecc.).
JSON
Notazione oggetto JavaScript. Sai già qualcosa su questo formato! Ne abbiamo parlato in questa lezione e abbiamo coperto la serializzazione in JSON proprio qui . Ha preso il nome per un motivo. Gli oggetti Java convertiti in JSON in realtà sembrano esattamente come gli oggetti in JavaScript. Non è necessario conoscere JavaScript per comprendere il nostro oggetto:{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Non ci limitiamo a inviare un singolo oggetto. Il formato JSON può anche rappresentare un array di oggetti:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
Poiché JSON rappresenta oggetti JavaScript, supporta i seguenti formati di dati JavaScript:
- stringhe;
- numeri;
- oggetti;
- matrici;
- booleani (vero e falso);
- nullo.
-
Formato leggibile dall'uomo. Questo è un ovvio vantaggio se il tuo utente finale è umano. Ad esempio, supponiamo che il tuo server disponga di un database con un programma di voli. Un cliente umano, seduto al suo computer a casa, richiede dati da questo database utilizzando un'applicazione web. Poiché devi fornire i dati in un formato comprensibile, JSON è un'ottima soluzione.
-
Semplicità. È super semplice :) Sopra, abbiamo fornito un esempio di due file JSON. E anche se non hai sentito parlare di JavaScript (per non parlare degli oggetti JavaScript), puoi facilmente capire il tipo di oggetti descritti lì.
L'intera documentazione JSON consiste in una pagina web con un paio di immagini. -
Uso diffuso. JavaScript è il linguaggio front-end dominante e ha i suoi requisiti. L'uso di JSON è un must. Pertanto, un numero enorme di servizi Web utilizza JSON come formato di scambio dei dati. Ogni IDE moderno supporta il formato JSON (incluso IntelliJ IDEA). Sono state scritte un sacco di librerie per tutti i tipi di linguaggi di programmazione per consentire di lavorare con JSON.
YAML
Inizialmente, YAML stava per "Yet Another Markup Language". Quando è iniziato, è stato posizionato come concorrente di XML. Ora, con il passare del tempo, YAML ha assunto il significato di "YAML Ain't Markup Language". Cos'è esattamente? Immaginiamo di dover creare 3 classi per rappresentare i personaggi in un gioco per computer: Guerriero, Mago e Ladro. Avranno le seguenti caratteristiche: forza, agilità, resistenza, un set di armi. Ecco come sarebbe un file YAML che descrive le nostre classi:classes:
class-1:
title: Warrior
power: 8
agility: 4
stamina: 7
weapons:
- sword
- spear
class-2:
title: Mage
power: 5
agility: 7
stamina: 5
weapons:
- magic staff
class-3:
title: Thief
power: 6
agility: 6
stamina: 5
weapons:
- dagger
- poison
Un file YAML ha una struttura ad albero: alcuni elementi sono nidificati in altri. Possiamo controllare l'annidamento usando un certo numero di spazi, che usiamo per denotare ogni livello. Quali sono i vantaggi del formato YAML?
-
Leggibile dagli umani. Ancora una volta, anche vedendo un file YAML senza una descrizione, puoi facilmente capire gli oggetti che descrive. YAML è così leggibile dall'uomo che il sito web yaml.org è un normale file YAML :)
-
Compattezza. La struttura del file viene creata utilizzando gli spazi: non è necessario utilizzare parentesi o virgolette.
-
Supporto per strutture dati native per linguaggi di programmazione. L'enorme vantaggio di YAML rispetto a JSON e molti altri formati è che supporta varie strutture di dati. Loro includono:
-
!!map
Un insieme non ordinato di coppie chiave-valore che non possono avere duplicati; -
!!omap
Una sequenza ordinata di coppie chiave-valore che non possono avere duplicati; -
!!pairs:
una sequenza ordinata di coppie chiave-valore che possono avere duplicati; - !!set
Una sequenza non ordinata di valori che non sono uguali tra loro; - !!seq
Una sequenza di valori arbitrari;
Riconoscerai alcune di queste strutture da Java! :) Ciò significa che varie strutture dati da linguaggi di programmazione possono essere serializzate in YAML.
-
-
Possibilità di utilizzare anchor e alias
Questi marcatori ti consentono di identificare alcuni elementi in un file YAML e quindi fare riferimento ad esso nel resto del file se si verifica ripetutamente. Viene creato un ancoraggio utilizzando il simbolo & e viene creato un alias utilizzando * .
Supponiamo di avere un file che descrive i libri di Leo Tolstoy. Per evitare di scrivere il nome dell'autore per ogni libro, creiamo semplicemente l'ancora leo e ci riferiamo ad essa usando un alias quando ne abbiamo bisogno:
books: book-1: title: War and Peace author: &leo Leo Tolstoy year: 1869 book-2: title: Anna Karenina author: *leo year: 1873 book-3: title: Family Happiness author: *leo year: 1859
Quando questo file viene analizzato, il valore "Leo Tolstoy" viene sostituito nei posti giusti dove abbiamo i nostri alias.
- YAML può incorporare dati in altri formati. Ad esempio, JSON:
books: [ { "title": "War and Peace", "author": "Leo Tolstoy", "year": 1869 }, { "title": "Anna Karenina", "author": "Leo Tolstoy", "year": 1873 }, { "title": "Family Happiness", "author": "Leo Tolstoy", "year": 1859 } ]
Altri formati di serializzazione
XML
Questo formato si basa su un albero di tag.<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Ogni elemento è costituito da un tag di apertura e di chiusura (<> e </>). Ogni elemento può avere elementi nidificati. XML è un formato comune che è buono quanto JSON e YAML (se parliamo di progetti reali). Abbiamo una lezione separata su XML . BSON (JSON binario)
Come suggerisce il nome, BSON è molto simile a JSON, ma non è leggibile dall'uomo e utilizza dati binari. Di conseguenza, è ottimo per archiviare e trasferire immagini e altri allegati. Inoltre, BSON supporta alcuni tipi di dati non disponibili in JSON. Ad esempio, un file BSON può includere una data (in formato millisecondo) o anche un pezzo di codice JavaScript. Il popolare database MongoDB NoSQL memorizza le informazioni in formato BSON.Protocollo basato sulla posizione
In alcune situazioni, dobbiamo ridurre drasticamente la quantità di dati inviati (ad esempio, se abbiamo molti dati e dobbiamo ridurre il carico). In questa situazione, possiamo utilizzare il protocollo basato sulla posizione, ovvero inviare i valori dei parametri senza i nomi dei parametri stessi."Leo Tolstoy" | "Anna Karenina" | 1873
I dati in questo formato occupano molto meno spazio di un file JSON completo. Naturalmente, ci sono altri formati di serializzazione, ma non è necessario conoscerli tutti in questo momento :) È utile se hai familiarità con gli attuali formati standard del settore durante lo sviluppo di applicazioni e ricordi i loro vantaggi e come differiscono da uno un altro. E con questo, la nostra lezione giunge al termine :) Non dimenticare di risolvere un paio di compiti oggi! Fino alla prossima volta! :)
GO TO FULL VERSION