I motsetning til JSON og XML, er YAML ment å være mer lesbar av mennesker og mindre ordentlig. I motsetning til rivalene JSON, som bruker parentes, og XML, som bruker brukerdefinerte tagger, bruker Yaml innrykk og hvitrom for å generere nestede blokker. Vanligvis brukes YAML -filer til å konfigurere applikasjoner som trenger servere for applikasjonshosting eller klynger for applikasjonsservere i stedet for serialisering eller deserialisering. Folk er ikke spesielt gode fans av YAML, selv om det har mange applikasjoner og er enkle nok til at mennesker kan lese.
YAML -språket brukes i innrykk for å representere struktur og hekke. Når komplekse data må analyseres, skaper innrykk. Når du sammenligner YAML, kan feil oppstå på grunn av et manglende eller ekstra hvitt rom i komplekse strukturer. Det er utfordrende å finne disse uventede problemene i YAML -filen. Siden YAML -dokumenter nå er så mye brukt, støter vi på situasjoner der vi trenger å håndtere data i YAML -dokumenter ved å bruke kode i praktisk talt alle andre prosjekt. Tallrike open source-biblioteker er gitt for å manipulere YAML-filer i Java. Både godt likt biblioteker, Jackson og Snakeyaml, kan brukes til å oppnå dette. Hovedemnet for denne artikkelen er hvordan du kan analysere YAML -filer i Java ved hjelp av Snakeyaml.
Hvordan få YAML -modulen på Java -språket i Ubuntu 20.04
YAML -filer kan analyseres i en Java -applikasjon ved hjelp av Snakeyaml -biblioteket. Det er et enkelt, lett bibliotek som gir serialisering og deserialisering API-er for YAML-filer. For å lagre flere dokumenter samtidig, bruk last () eller Lastall () -funksjonene i partier. Funksjonen bruker inputStream, en populær standard for å samhandle med filer og strengobjekter som holder tilstrekkelige YAML -data.
Hvis du bruker en Spring Boot -applikasjon, må den nyeste versjonen av Maven -avhengigheter legges til før du bruker Snakeyaml i et prosjekt i POM.XML -fil, som vist i følgende:
Eksempel 1: Les YAML -filen på Java -språket
La oss lese følgende dokument av YAML -filen i Java. Dette YAML -dokumentet er lagret i den ansatte.YAML -fil.
Vi vil nå analysere det forrige YAML -dokumentet (ansatt.yaml) ved hjelp av YAML -klassen. Denne YAML er lokalisert i ressursmappen til vårt Java -prosjekt. La oss først laste inn filen i en inputStream. Etter det vil vi bygge YAML -objektet, som fungerer som utgangspunkt for å bruke biblioteket. Vi kan lese og analysere alle gyldige YAML -data fra en inputStream, leser eller streng når vi bruker YAML -forekomsten ved å bruke metoder som belastning ().
Modulen implementerer et Java -kart der nøklene og verdiene for hver egenskap er representert med navnene deres. Fordi dataene våre er lagret i YAML -filer som strengverdier, tall eller til og med samlinger, er det viktig å huske at kartverdiene er av typeobjektet. Disse kan passe inni et objekt, som inkluderer enhver verdi vi kan tilsette.
Følgende utfall vil bli oppnådd hvis vi viser vårt dataobjekt der YAML -filen ble lastet inn:
Eksempel 2: Les det nestede dokumentet fra YAML -filen på Java -språket
Som du kan se, kartlegger et Java-kartobjekt ganske enkelt egenskapene fra YAML-filen som nøkkelverdipar i vår forrige eksempelkode. La oss endre vår YAML -fil slik at den også inkluderer innsamlingsdata. Den oppdaterte YAML -filen vises som følger:
En samling av felt "kurs" med flere dataverdier er nå inkludert i vår YAML -fil. Verken vår Java -kode eller den modifiserte YAML -filen krever oppdatering. YAML -filen kan lastes inn i kartobjektet vårt ved å bruke den forrige koden uten problemer. Vi må bare oppdatere YAML -filnavnet i FileInputStream -metoden.
Utfallet av å lese filen vises inne i bildet. Hver verdi i listen over verdier for kolonnen "Kurs" i YAML -filen er et kartobjekt.
Eksempel 3: Les YAML -objektet som Java Custom Object
Nå har vi brukt YAML-filen i vår Java-kode som enkle nøkkelverdipar, la oss importere studenten igjen.YAML-fil som et tilpasset Java-objekt, en mer typisk bruk-sak. For å importere data fra våre YAML -filer, bruker vi følgende Java -klasser: Første klasse er en personklasse der attributtene er ID, navn og adresse. Getter Setter -metoden er også definert for hvert attributt. Dataene dine er beskyttet av gettere og setters, spesielt når du konstruerer klasser.
Fra klassepersonen har vi utvidet studentklassen og definerte dens attributter. Attributtene blir oppdatert, og en variabels verdi oppnås gjennom getter- og settermetoden.
Som de to foregående klassene er kursklassen også konstruert med attributtene.
Dataene vil bli lastet inn i et objekt som heter Student, og YAML -filens kurselement vil bli omgjort til en liste over feltkurs. YAML -filen vi brukte i forrige eksempel vil bli brukt igjen og lastet som en inputStream.
Nå gir vi den datatypen vi ønsker å kaste dataene i når vi oppretter vårt YAML -klasseobjekt. Snakeyaml blir bedt om å lese dataene fra YAML -filen og kartlegge den til studentobjektet vårt av den nye konstruktøren (studenten.klasse).
Kartleggingen er enkel, og objektet attributter 'navn må sammenfalle med attributtene' YAML -navn (kurs -> kurs). Som et resultat vil du få følgende utdata:
Konklusjon
Denne artikkelen introduserer først og fremst Java-implementeringen av Snakeyaml-basert YAML-parsing og serialisering. Snakeyaml gjør det enkelt å manipulere YAML -filer i Java -prosjekter og krever lite kode for å importere YAML -filer til prosjekter. Snakeyaml tilbyr formateringsalternativer, slik at du kan justere og endre dem for å passe dine krav. Denne siden beskriver prøvekoden, og gir alle en verdifull læringsressurs.