- docx (Microsoft Word-format);
- pdf (Adobe-format);
- mobi (används vanligtvis på Amazon Kindle-enheter);
- och mycket mer (ePub, djvu, fb2, etc.).
JSON
JavaScript-objektnotation. Du vet redan lite om detta format! Vi pratade om det i den här lektionen och vi behandlade serialisering till JSON här . Den fick sitt namn av en anledning. Java-objekt som konverterats till JSON ser faktiskt ut precis som objekt i JavaScript. Du behöver inte kunna JavaScript för att förstå vårt objekt:
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Vi är inte begränsade till att skicka ett enda objekt. JSON-formatet kan också representera en array av objekt:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
Eftersom JSON representerar JavaScript-objekt, stöder den följande JavaScript-dataformat:
- strängar;
- tal;
- föremål;
- matriser;
- booleaner (sant och falskt);
- null.
-
Människoläsbart format. Detta är en uppenbar fördel om din slutanvändare är mänsklig. Anta till exempel att din server har en databas med ett schema över flygningar. En mänsklig kund, som sitter vid sin dator hemma, begär data från denna databas med hjälp av en webbapplikation. Eftersom du behöver tillhandahålla data i ett format som han kan förstå är JSON en utmärkt lösning.
-
Enkelhet. Det är superenkelt :) Ovan gav vi ett exempel på två JSON-filer. Och även om du inte har hört talas om JavaScript (för att inte tala om JavaScript-objekt), kan du lätt förstå den typ av objekt som beskrivs där.
Hela JSON-dokumentationen består av en webbsida med ett par bilder. -
Utbredd användning. JavaScript är det dominerande gränssnittsspråket och det har sina egna krav. Att använda JSON är ett måste. Därför använder ett stort antal webbtjänster JSON som datautbytesformat. Alla moderna IDE stöder JSON-formatet (inklusive IntelliJ IDEA). Ett gäng bibliotek har skrivits för alla möjliga programmeringsspråk för att kunna arbeta med JSON.
YAML
Från början stod YAML för "Yet Another Markup Language". När det började var det positionerat som en konkurrent till XML. Nu, med tidens gång, har YAML kommit att betyda "YAML Ain't Markup Language". Vad är det exakt? Låt oss föreställa oss att vi måste skapa 3 klasser för att representera karaktärer i ett datorspel: Warrior, Mage och Thief. De kommer att ha följande egenskaper: styrka, smidighet, uthållighet, en uppsättning vapen. Så här skulle en YAML-fil som beskriver våra klasser 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 trädstruktur: vissa element är kapslade i andra. Vi kan styra kapsling med ett visst antal mellanslag, som vi använder för att beteckna varje nivå. Vilka är fördelarna med YAML-formatet?
-
Människoläsbar. Återigen, även om du ser en YAML-fil utan en beskrivning, kan du enkelt förstå objekten som den beskriver. YAML är så mänskligt läsbar att webbplatsen yaml.org är en vanlig YAML-fil :)
-
Kompakthet. Filstrukturen skapas med blanksteg: det finns inget behov av att använda parenteser eller citattecken.
-
Stöd för inbyggda datastrukturer för programmeringsspråk. Den stora fördelen med YAML framför JSON och många andra format är att den stöder olika datastrukturer. De inkluderar:
-
!!map
En oordnad uppsättning nyckel-värdepar som inte kan ha dubbletter; -
!!omap
En ordnad sekvens av nyckel-värdepar som inte kan ha dubbletter; -
!!par:
En ordnad sekvens av nyckel-värdepar som kan ha dubbletter; - !!set
En oordnad sekvens av värden som inte är lika med varandra; - !!seq
En sekvens av godtyckliga värden;
Du kommer att känna igen några av dessa strukturer från Java! :) Detta innebär att olika datastrukturer från programmeringsspråk kan serialiseras till YAML.
-
-
Möjlighet att använda ankare och alias
Dessa markörer låter dig identifiera något element i en YAML-fil och sedan referera till det i resten av filen om det inträffar upprepade gånger. Ett ankare skapas med hjälp av symbolen & , och ett alias skapas med * .
Anta att vi har en fil som beskriver böcker av Leo Tolstoj. För att undvika att skriva ut författarens namn för varje bok skapar vi helt enkelt leo-ankaret och hänvisar till det med ett alias när vi behöver 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 denna fil tolkas, ersätts värdet "Leo Tolstoy" på rätt ställen där vi har våra alias.
- YAML kan bädda in data i andra format. Till exempel, 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 } ]
Andra serialiseringsformat
XML
Detta format är baserat på ett taggträd.
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Varje element består av en öppnings- och stängningstagg (<> och </>). Varje element kan ha kapslade element. XML är ett vanligt format som är lika bra som JSON och YAML (om vi pratar om riktiga projekt). Vi har en separat lektion om XML .
BSON (binär JSON)
Som namnet antyder är BSON väldigt lik JSON, men den är inte läsbar för människor och använder binär data. Som ett resultat är det mycket bra för att lagra och överföra bilder och andra bilagor. Dessutom stöder BSON vissa datatyper som inte är tillgängliga i JSON. Till exempel kan en BSON-fil innehålla ett datum (i millisekundsformat) eller till och med en bit JavaScript-kod. Den populära MongoDB NoSQL-databasen lagrar information i BSON-format.Positionsbaserat protokoll
I vissa situationer behöver vi drastiskt minska mängden data som skickas (till exempel om vi har mycket data och behöver minska belastningen). I den här situationen kan vi använda det positionsbaserade protokollet, det vill säga skicka parametervärden utan namnen på själva parametrarna.
"Leo Tolstoy" | "Anna Karenina" | 1873
Data i detta format tar flera gånger mindre utrymme än en fullständig JSON-fil. Naturligtvis finns det andra serialiseringsformat, men du behöver inte känna till alla just nu :) Det är bra om du är bekant med de nuvarande industristandardformaten när du utvecklar applikationer, och kommer ihåg deras fördelar och hur de skiljer sig från ett annan. Och med detta tar vår lektion sitt slut :) Glöm inte att lösa ett par uppgifter idag! Tills nästa gång! :)
GO TO FULL VERSION