- docx (Microsoft Word-formaat);
- pdf (Adobe-formaat);
- mobi (vaak gebruikt op Amazon Kindle-apparaten);
- en nog veel meer (ePub, djvu, fb2, enz.).
JSON
JavaScript-objectnotatie. Je weet al een beetje over dit formaat! We hebben het er in deze les over gehad en we hebben het hier over serialisatie in JSON gehad . Het heeft zijn naam niet voor niets gekregen. Java-objecten die naar JSON zijn geconverteerd, zien er eigenlijk precies zo uit als objecten in JavaScript. U hoeft geen JavaScript te kennen om ons object te begrijpen:
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
We zijn niet beperkt tot het verzenden van een enkel object. Het JSON-formaat kan ook een reeks objecten vertegenwoordigen:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
Omdat JSON JavaScript-objecten vertegenwoordigt, ondersteunt het de volgende JavaScript-gegevensindelingen:
- snaren;
- nummers;
- voorwerpen;
- reeksen;
- booleans (waar en onwaar);
- nul.
-
Voor mensen leesbaar formaat. Dit is een duidelijk voordeel als uw eindgebruiker een mens is. Stel dat uw server een database heeft met een vluchtschema. Een menselijke klant, die thuis achter zijn computer zit, vraagt via een webapplicatie gegevens op uit deze database. Omdat u gegevens moet aanleveren in een formaat dat hij kan begrijpen, is JSON een geweldige oplossing.
-
Eenvoud. Het is supereenvoudig :) Hierboven gaven we een voorbeeld van twee JSON-bestanden. En zelfs als je nog nooit van JavaScript hebt gehoord (laat staan van JavaScript-objecten), kun je het soort objecten dat daar wordt beschreven gemakkelijk begrijpen.
De hele JSON-documentatie bestaat uit een webpagina met een paar afbeeldingen. -
Wijdverbreid gebruik. JavaScript is de dominante front-end-taal en heeft zijn eigen vereisten. Het gebruik van JSON is een must. Daarom gebruiken een groot aantal webservices JSON als formaat voor gegevensuitwisseling. Elke moderne IDE ondersteunt het JSON-formaat (inclusief IntelliJ IDEA). Er zijn een aantal bibliotheken geschreven voor allerlei programmeertalen om het werken met JSON mogelijk te maken.
YAML
Oorspronkelijk stond YAML voor "Yet Another Markup Language". Toen het begon, werd het gepositioneerd als een concurrent van XML. Nu, met het verstrijken van de tijd, is YAML "YAML Ain't Markup Language" gaan betekenen. Wat is het precies? Laten we ons voorstellen dat we 3 klassen moeten maken om personages in een computerspel te vertegenwoordigen: Warrior, Mage en Thief. Ze zullen de volgende kenmerken hebben: kracht, behendigheid, uithoudingsvermogen, een set wapens. Dit is hoe een YAML-bestand dat onze klassen beschrijft, eruit zou zien:
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
Een YAML-bestand heeft een boomstructuur: sommige elementen zijn genest in andere. We kunnen het nesten regelen met behulp van een bepaald aantal spaties, die we gebruiken om elk niveau aan te duiden. Wat zijn de voordelen van het YAML-formaat?
-
Leesbare. Nogmaals, zelfs als u een YAML-bestand zonder beschrijving ziet, kunt u de objecten die het beschrijft gemakkelijk begrijpen. YAML is zo leesbaar voor mensen dat de website yaml.org een gewoon YAML-bestand is :)
-
Compactheid. De bestandsstructuur wordt gemaakt met behulp van spaties: het is niet nodig om haakjes of aanhalingstekens te gebruiken.
-
Ondersteuning voor native datastructuren voor programmeertalen. Het grote voordeel van YAML ten opzichte van JSON en vele andere formaten is dat het verschillende datastructuren ondersteunt. Ze bevatten:
-
!!map
Een ongeordende set sleutel-waardeparen die geen duplicaten kunnen hebben; -
!!omap
Een geordende reeks sleutel-waardeparen die geen duplicaten kunnen hebben; -
!!paren:
Een geordende reeks sleutel-waardeparen die duplicaten kunnen hebben; - !!set
Een ongeordende reeks waarden die niet aan elkaar gelijk zijn; - !!seq
Een reeks willekeurige waarden;
Sommige van deze structuren herken je wel van Java! :) Dit betekent dat verschillende datastructuren uit programmeertalen kunnen worden geserialiseerd in YAML.
-
-
Mogelijkheid om anker en alias te gebruiken
Met deze markeringen kunt u een element in een YAML-bestand identificeren en er vervolgens naar verwijzen in de rest van het bestand als het herhaaldelijk voorkomt. Een anker wordt gemaakt met behulp van het symbool & en een alias wordt gemaakt met * .
Stel dat we een dossier hebben met boeken van Leo Tolstoj. Om te voorkomen dat de naam van de auteur voor elk boek wordt weggeschreven, maken we eenvoudig het leo-anker en verwijzen we ernaar met een alias wanneer we het nodig hebben:
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
Wanneer dit bestand wordt geparseerd, wordt de waarde "Leo Tolstoy" vervangen op de juiste plaatsen waar we onze aliassen hebben.
- YAML kan gegevens in andere indelingen insluiten. Bijvoorbeeld 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 } ]
Andere serialisatieformaten
xml
Dit formaat is gebaseerd op een tagboom.
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Elk element bestaat uit een openings- en sluitingstag (<> en </>). Elk element kan geneste elementen hebben. XML is een veelgebruikt formaat dat net zo goed is als JSON en YAML (als we het hebben over echte projecten). We hebben een aparte les over XML .
BSON (binaire JSON)
Zoals de naam al aangeeft, lijkt BSON erg op JSON, maar het is niet leesbaar voor mensen en gebruikt binaire gegevens. Hierdoor is het zeer geschikt voor het opslaan en overzetten van afbeeldingen en andere bijlagen. Bovendien ondersteunt BSON sommige gegevenstypen die niet beschikbaar zijn in JSON. Een BSON-bestand kan bijvoorbeeld een datum (in milliseconde-indeling) of zelfs een stukje JavaScript-code bevatten. De populaire MongoDB NoSQL-database slaat informatie op in BSON-indeling.Positiegebaseerd protocol
In sommige situaties moeten we de hoeveelheid verzonden gegevens drastisch verminderen (bijvoorbeeld als we veel gegevens hebben en de belasting moeten verminderen). In deze situatie kunnen we het op positie gebaseerde protocol gebruiken, dat wil zeggen parameterwaarden verzenden zonder de namen van de parameters zelf.
"Leo Tolstoy" | "Anna Karenina" | 1873
Gegevens in dit formaat nemen vele malen minder ruimte in beslag dan een volledig JSON-bestand. Natuurlijk zijn er andere serialisatie-indelingen, maar u hoeft ze nu niet allemaal te kennen :) Het is goed als u bekend bent met de huidige industriestandaardindelingen bij het ontwikkelen van applicaties, en hun voordelen onthoudt en hoe ze van elkaar verschillen een andere. En hiermee komt onze les tot een einde :) Vergeet vandaag niet een aantal taken op te lossen! Tot de volgende keer! :)
GO TO FULL VERSION