A differenza di JSON e XML, YAML è destinato a essere più leggibile dagli umani e meno verbose. Contrariamente ai suoi rivali JSON, che impiega parentesi, e XML, che utilizza tag definiti dall'utente, YAML utilizza il rientro e lo spazio bianco per generare blocchi nidificati. Di solito, i file YAML vengono utilizzati per configurare le applicazioni che richiedono server per l'hosting delle applicazioni o i cluster per i server dell'applicazione piuttosto che per la serializzazione o la deserializzazione. Le persone non sono particolarmente grandi fan di Yaml, anche se ha molte applicazioni ed è abbastanza semplice da leggere per gli umani.
Il linguaggio YAML è usato in rientro per rappresentare la struttura e la nidificazione. Quando devono essere analizzati dati complessi, il rientro crea problemi. Quando si confrontano YAML, possono verificarsi guasti a causa di uno spazio bianco mancante o extra in strutture complesse. È difficile individuare questi problemi inaspettati nel file YAML. Poiché i documenti YAML sono ora così ampiamente utilizzati, ci imbattiamo in situazioni in cui dobbiamo gestire i dati nei documenti YAML utilizzando il codice praticamente in ogni altro progetto. Numerose librerie open source sono previste per manipolare i file YAML in Java. Sia le biblioteche apprezzate, Jackson e Snakeyaml, possono essere utilizzate per raggiungere questo obiettivo. L'argomento principale di questo articolo è come analizzare i file yaml in java usando snakeyaml.
Come ottenere il modulo Yaml in lingua Java in Ubuntu 20.04
I file YAML possono essere analizzati in un'applicazione Java utilizzando la libreria Snakeyaml. È una libreria semplice e leggera che fornisce API di serializzazione e deserializzazione di alto livello per i file YAML. Per archiviare diversi documenti contemporaneamente, utilizzare le funzioni load () o loadAll () nei lotti. La funzione utilizza inputstream, uno standard popolare per interagire con file e oggetti stringa che possiedono sufficienti dati YAML.
Se si utilizza un'applicazione di avvio a molla, la versione più recente delle dipendenze Maven deve essere aggiunta prima di utilizzare SnakeyAML in un progetto nel POM.File XML, come mostrato nel seguente:
Esempio 1: leggi il file Yaml nella lingua Java
Leggiamo il seguente documento del file Yaml in Java. Questo documento YAML è archiviato all'interno del dipendente.File yaml.
Ora analizzeremo il precedente documento YAML (dipendente.Yaml) usando la classe Yaml. Questo yaml si trova nella cartella delle risorse del nostro progetto Java. Innanzitutto, cariciamo il file in un inputstream. Successivamente, costruiremo l'oggetto YAML, che funge da punto di partenza per l'utilizzo della libreria. Possiamo leggere e analizzare tutti i dati YAML validi da un inputstream, lettore o stringa quando si utilizza l'istanza YAML utilizzando metodi come load ().
Il modulo implementa una mappa Java in cui le chiavi e i valori per ciascuna proprietà sono rappresentati dai loro nomi. Poiché i nostri dati sono archiviati nei file YAML come valori di stringa, numeri o persino raccolte, è essenziale ricordare che i valori della mappa sono dell'oggetto di tipo. Questi possono adattarsi all'interno di un oggetto, che include qualsiasi valore che potremmo aggiungere.
Il seguente risultato verrà ottenuto se visualizziamo il nostro oggetto dati in cui è stato caricato il file YAML:
Esempio 2: leggi il documento nidificato dal file YAML in lingua Java
Come puoi vedere, un oggetto Map Java mappa semplicemente le proprietà dal file YAML come coppie di valore chiave nel nostro codice di esempio precedente. Modifichiamo il nostro file YAML in modo che includa anche i dati di raccolta. Il file YAML aggiornato appare come segue:
Una raccolta di "corsi" di campo con più valori di dati è ora inclusa nel nostro file YAML. Né il nostro codice Java né il file YAML modificato richiedono l'aggiornamento. Il file YAML può essere caricato nel nostro oggetto mappa utilizzando il codice precedente senza problemi. Dobbiamo solo aggiornare il nome del file YAML all'interno del metodo FileInputStream.
Il risultato della lettura del file è mostrato all'interno dell'immagine. Ogni valore nell'elenco dei valori per la colonna "corsi" nel file yaml è un oggetto mappa.
Esempio 3: leggi l'oggetto YAML come oggetto personalizzato Java
Ora abbiamo utilizzato correttamente il file YAML nel nostro codice Java come coppie di valore chiave semplice, importiamo di nuovo lo studente.File Yaml come oggetto Java personalizzato, un caso d'uso più tipico. Per importare dati dai nostri file YAML, utilizzeremo le seguenti classi Java: la prima classe è una classe di persona in cui gli attributi sono ID, nome e indirizzo ID. Il metodo del setter getter è anche definito per ciascun attributo. I tuoi dati sono protetti da getter e setter, soprattutto quando si costruiscono classi.
Dalla persona di classe, abbiamo esteso la classe studentesca e definito i suoi attributi. Gli attributi vengono aggiornati e il valore di una variabile viene ottenuto tramite il metodo getter e setter.
Come le due classi precedenti, la classe del corso è anche costruita con i suoi attributi.
I dati verranno caricati in un oggetto chiamato Student e l'elemento dei corsi del file YAML verrà trasformato in un elenco di corsi sul campo. Il file yaml che abbiamo usato nell'esempio precedente verrà nuovamente utilizzato e caricato come inputstream.
Ora forniamo il tipo di dati in cui desideriamo lanciare i dati quando creiamo il nostro oggetto di classe YAML. Snakeyaml è chiesto di leggere i dati dal file yaml e mapparli al nostro oggetto studente dal nuovo costruttore (studente.classe).
La mappatura è semplice e i nomi degli attributi dell'oggetto devono coincidere con i nomi YAML degli attributi (corsi -> Corsi). Di conseguenza, otterrai il seguente output:
Conclusione
Questo articolo introduce principalmente l'implementazione di Java di analisi e serializzazione YAML con sede a Snakeyaml. Snakeyaml rende semplice manipolare i file YAML nei progetti Java e richiede poco codice per importare file YAML nei progetti. Snakeyaml offre opzioni di formattazione, permettendoti di adattarle e modificarle per soddisfare le tue esigenze. Questa pagina descrive in dettaglio il codice di esempio, fornendo a tutti una preziosa risorsa di apprendimento.