- docx (Microsoft Word-format);
- pdf (Adobe-format);
- mobi (vanligvis brukt på Amazon Kindle-enheter);
- og mye mer (ePub, djvu, fb2, etc.).
JSON
JavaScript-objektnotasjon. Du vet allerede litt om dette formatet! Vi snakket om det i denne leksjonen , og vi dekket serialisering til JSON her . Den har fått navnet sitt av en grunn. Java-objekter konvertert til JSON ser faktisk akkurat ut som objekter i JavaScript. Du trenger ikke å kunne JavaScript for å forstå objektet vårt:{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Vi er ikke begrenset til å sende et enkelt objekt. JSON-formatet kan også representere en rekke objekter:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
Fordi JSON representerer JavaScript-objekter, støtter den følgende JavaScript-dataformater:
- strenger;
- tall;
- gjenstander;
- matriser;
- boolsk (sant og usant);
- null.
-
Menneskelest format. Dette er en åpenbar fordel hvis sluttbrukeren din er menneskelig. Anta for eksempel at serveren din har en database med en tidsplan over flyreiser. En menneskelig kunde som sitter ved datamaskinen hjemme, ber om data fra denne databasen ved hjelp av en nettapplikasjon. Fordi du trenger å gi data i et format som han kan forstå, er JSON en flott løsning.
-
Enkelhet. Det er superenkelt :) Ovenfor ga vi et eksempel på to JSON-filer. Og selv om du ikke har hørt om JavaScript (for ikke å snakke om JavaScript-objekter), kan du lett forstå hva slags objekter som er beskrevet der.
Hele JSON-dokumentasjonen består av en nettside med et par bilder. -
Utbredt bruk. JavaScript er det dominerende grensesnittspråket, og det har sine egne krav. Å bruke JSON er et must. Derfor bruker et stort antall nettjenester JSON som datautvekslingsformat. Hver moderne IDE støtter JSON-formatet (inkludert IntelliJ IDEA). En haug med biblioteker er skrevet for alle slags programmeringsspråk for å muliggjøre arbeid med JSON.
YAML
Opprinnelig sto YAML for "Yet Another Markup Language". Da det begynte, ble det posisjonert som en konkurrent til XML. Nå, med tidens gang, har YAML kommet til å bety "YAML Ain't Markup Language". Hva er det egentlig? La oss forestille oss at vi må lage 3 klasser for å representere karakterer i et dataspill: Warrior, Mage og Thief. De vil ha følgende egenskaper: styrke, smidighet, utholdenhet, et sett med våpen. Slik vil en YAML-fil som beskriver klassene våre se ut: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
En YAML-fil har en trestruktur: noen elementer er nestet i andre. Vi kan kontrollere hekking ved å bruke et visst antall mellomrom, som vi bruker for å angi hvert nivå. Hva er fordelene med YAML-formatet?
-
Menneskelig lesbar. Igjen, selv om du ser en YAML-fil uten en beskrivelse, kan du enkelt forstå objektene som den beskriver. YAML er så menneskelig lesbart at nettstedet yaml.org er en vanlig YAML-fil :)
-
Kompakthet. Filstrukturen lages med mellomrom: det er ikke nødvendig å bruke parenteser eller anførselstegn.
-
Støtte for innfødte datastrukturer for programmeringsspråk. Den store fordelen med YAML fremfor JSON og mange andre formater er at den støtter ulike datastrukturer. De inkluderer:
-
!!map
Et uordnet sett med nøkkelverdi-par som ikke kan ha duplikater; -
!!omap
En ordnet sekvens av nøkkel-verdi-par som ikke kan ha duplikater; -
!!par:
En ordnet sekvens av nøkkelverdi-par som kan ha duplikater; - !!sett
En uordnet sekvens av verdier som ikke er lik hverandre; - !!seq
En sekvens av vilkårlige verdier;
Du vil kjenne igjen noen av disse strukturene fra Java! :) Dette betyr at ulike datastrukturer fra programmeringsspråk kan serialiseres til YAML.
-
-
Evne til å bruke anker og alias
Disse markørene lar deg identifisere et element i en YAML-fil, og deretter referere til det i resten av filen hvis det oppstår gjentatte ganger. Et anker opprettes ved å bruke symbolet & , og et alias opprettes ved hjelp av * .
Anta at vi har en fil som beskriver bøker av Leo Tolstoj. For å unngå å skrive ut forfatterens navn for hver bok, lager vi ganske enkelt leo-ankeret og refererer til det ved å bruke et alias når vi trenger det:
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
Når denne filen er analysert, erstattes verdien "Leo Tolstoy" på de riktige stedene der vi har aliasene våre.
- YAML kan legge inn data i andre formater. For eksempel, 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 } ]
Andre serialiseringsformater
XML
Dette formatet er basert på et tag-tre.<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Hvert element består av en åpnings- og lukkingskode (<> og </>). Hvert element kan ha nestede elementer. XML er et vanlig format som er like bra som JSON og YAML (hvis vi snakker om ekte prosjekter). Vi har en egen leksjon om XML .
BSON (binær JSON)
Som navnet tilsier, er BSON veldig lik JSON, men det er ikke lesbart for mennesker og bruker binære data. Som et resultat er det veldig bra for lagring og overføring av bilder og andre vedlegg. I tillegg støtter BSON enkelte datatyper som ikke er tilgjengelige i JSON. For eksempel kan en BSON-fil inkludere en dato (i millisekundformat) eller til og med et stykke JavaScript-kode. Den populære MongoDB NoSQL-databasen lagrer informasjon i BSON-format.Posisjonsbasert protokoll
I noen situasjoner må vi drastisk redusere mengden data som sendes (for eksempel hvis vi har mye data og trenger å redusere belastningen). I denne situasjonen kan vi bruke den posisjonsbaserte protokollen, det vil si sende parameterverdier uten navnene på selve parameterne."Leo Tolstoy" | "Anna Karenina" | 1873
Data i dette formatet tar flere ganger mindre plass enn en full JSON-fil. Selvfølgelig finnes det andre serialiseringsformater, men du trenger ikke å kjenne alle akkurat nå :) Det er bra om du er kjent med gjeldende industristandardformater når du utvikler applikasjoner, og husker fordelene deres og hvordan de skiller seg fra én. en annen. Og med dette går leksjonen vår mot slutten :) Ikke glem å løse et par oppgaver i dag! Til neste gang! :)