- docx (Microsoft Word-format);
- pdf (Adobe-format);
- mobi (almindeligvis brugt på Amazon Kindle-enheder);
- og meget mere (ePub, djvu, fb2 osv.).
JSON
JavaScript-objektnotation. Du ved allerede lidt om dette format! Vi talte om det i denne lektion , og vi dækkede serialisering til JSON lige her . Det har fået sit navn af en grund. Java-objekter konverteret til JSON ligner faktisk objekter i JavaScript. Du behøver ikke at kende JavaScript for at forstå vores objekt:{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Vi er ikke begrænset til at sende et enkelt objekt. JSON-formatet kan også repræsentere en række 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 repræsenterer JavaScript-objekter, understøtter den følgende JavaScript-dataformater:
- strenge;
- tal;
- genstande;
- arrays;
- booleaner (sandt og falsk);
- nul.
-
Menneskelæsbart format. Dette er en åbenlys fordel, hvis din slutbruger er et menneske. Antag for eksempel, at din server har en database med en flyveplan. En menneskelig kunde, der sidder ved sin computer derhjemme, anmoder om data fra denne database ved hjælp af en webapplikation. Fordi du skal levere data i et format, som han kan forstå, er JSON en fantastisk løsning.
-
Enkelhed. Det er super simpelt :) Ovenfor gav vi et eksempel på to JSON-filer. Og selvom du ikke har hørt om JavaScript (endsige JavaScript-objekter), kan du nemt forstå den slags objekter, der er beskrevet der.
Hele JSON-dokumentationen består af en webside med et par billeder. -
Udbredt brug. JavaScript er det dominerende frontend-sprog, og det har sine egne krav. Brug af JSON er et must. Derfor bruger et stort antal webtjenester JSON som dataudvekslingsformat. Alle moderne IDE understøtter JSON-formatet (inklusive IntelliJ IDEA). En masse biblioteker er blevet skrevet til alle mulige programmeringssprog for at gøre det muligt at arbejde med JSON.
YAML
Oprindeligt stod YAML for "Yet Another Markup Language". Da det begyndte, var det positioneret som en konkurrent til XML. Nu, med tidens gang, er YAML kommet til at betyde "YAML Ain't Markup Language". Hvad er det helt præcist? Lad os forestille os, at vi skal oprette 3 klasser for at repræsentere karakterer i et computerspil: Warrior, Mage og Thief. De vil have følgende egenskaber: styrke, smidighed, udholdenhed, et sæt våben. Sådan vil en YAML-fil, der beskriver vores klasser, se ud: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æstruktur: nogle elementer er indlejret i andre. Vi kan styre indlejring ved hjælp af et bestemt antal mellemrum, som vi bruger til at angive hvert niveau. Hvad er fordelene ved YAML-formatet?
-
Menneskelæselig. Igen, selv om du ser en YAML-fil uden en beskrivelse, kan du nemt forstå de objekter, den beskriver. YAML er så menneskelig læsbar, at hjemmesiden yaml.org er en almindelig YAML-fil :)
-
Kompakthed. Filstrukturen oprettes ved hjælp af mellemrum: der er ingen grund til at bruge parenteser eller anførselstegn.
-
Understøttelse af native datastrukturer til programmeringssprog. Den store fordel ved YAML i forhold til JSON og mange andre formater er, at det understøtter forskellige datastrukturer. De omfatter:
-
!!map
Et uordnet sæt nøgleværdi-par, der ikke kan have dubletter; -
!!omap
En ordnet sekvens af nøgleværdi-par, der ikke kan have dubletter; -
!!par:
En ordnet sekvens af nøgle-værdi-par, der kan have dubletter; - !!set
En uordnet række af værdier, der ikke er ens med hinanden; - !!seq
En sekvens af vilkårlige værdier;
Du vil genkende nogle af disse strukturer fra Java! :) Det betyder, at forskellige datastrukturer fra programmeringssprog kan serialiseres til YAML.
-
-
Evne til at bruge anker og alias
Disse markører giver dig mulighed for at identificere et eller andet element i en YAML-fil og derefter henvise til det i resten af filen, hvis det forekommer gentagne gange. Et anker oprettes ved hjælp af symbolet & , og et alias oprettes ved hjælp af * .
Antag, at vi har en fil, der beskriver bøger af Leo Tolstoj. For at undgå at skrive forfatterens navn ud for hver bog, opretter vi blot leo-ankeret og henviser til det ved hjælp af et alias, når vi har brug for 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 fil parses, erstattes værdien "Leo Tolstoy" de rigtige steder, hvor vi har vores aliaser.
- YAML kan indlejre 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 format er baseret på et tag-træ.<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Hvert element består af et åbnings- og lukketag (<> og </>). Hvert element kan have indlejrede elementer. XML er et almindeligt format, der er lige så godt som JSON og YAML (hvis vi taler om rigtige projekter). Vi har en separat lektion om XML .
BSON (binær JSON)
Som navnet antyder, ligner BSON meget JSON, men det er ikke læseligt for mennesker og bruger binære data. Som et resultat er det meget godt til lagring og overførsel af billeder og andre vedhæftede filer. Derudover understøtter BSON nogle datatyper, der ikke er tilgængelige i JSON. For eksempel kan en BSON-fil indeholde en dato (i millisekundformat) eller endda et stykke JavaScript-kode. Den populære MongoDB NoSQL-database gemmer information i BSON-format.Positionsbaseret protokol
I nogle situationer er vi nødt til at reducere mængden af sendt data drastisk (f.eks. hvis vi har mange data og skal reducere belastningen). I denne situation kan vi bruge den positionsbaserede protokol, det vil sige at sende parameterværdier uden selve parametrenes navne."Leo Tolstoy" | "Anna Karenina" | 1873
Data i dette format tager flere gange mindre plads end en fuld JSON-fil. Selvfølgelig er der andre serialiseringsformater, men du behøver ikke kende dem alle lige nu :) Det er godt, hvis du er bekendt med de nuværende industristandardformater, når du udvikler applikationer, og husker deres fordele, og hvordan de adskiller sig fra én en anden. Og med dette slutter vores lektion :) Glem ikke at løse et par opgaver i dag! Indtil næste gang! :)