- docx (format Microsoft Word);
- pdf (format Adobe);
- mobi (powszechnie używany na urządzeniach Amazon Kindle);
- i wiele więcej (ePub, djvu, fb2 itp.).
JSON
Notacja obiektu JavaScript. Wiesz już trochę o tym formacie! Mówiliśmy o tym w tej lekcji , a serializację do formatu JSON omówiliśmy właśnie tutaj . Nie bez powodu ma swoją nazwę. Obiekty Java przekonwertowane na JSON wyglądają dokładnie tak samo jak obiekty w JavaScript. Nie musisz znać JavaScript, aby zrozumieć nasz obiekt:
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Nie ograniczamy się do wysłania pojedynczego przedmiotu. Format JSON może również reprezentować tablicę obiektów:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
Ponieważ JSON reprezentuje obiekty JavaScript, obsługuje następujące formaty danych JavaScript:
- smyczki;
- liczby;
- przedmioty;
- tablice;
- wartości logiczne (prawda i fałsz);
- zero.
-
Format czytelny dla człowieka. Jest to oczywista zaleta, jeśli użytkownik końcowy jest człowiekiem. Załóżmy na przykład, że twój serwer ma bazę danych z rozkładem lotów. Klient siedzący przy komputerze w domu żąda danych z tej bazy danych za pomocą aplikacji internetowej. Ponieważ musisz dostarczać dane w formacie zrozumiałym dla niego, JSON jest świetnym rozwiązaniem.
-
Prostota. To super proste :) Powyżej podaliśmy przykład dwóch plików JSON. I nawet jeśli nie słyszałeś o JavaScript (nie mówiąc już o obiektach JavaScript), możesz łatwo zrozumieć rodzaj opisanych tam obiektów.
Cała dokumentacja JSON składa się ze strony internetowej z kilkoma obrazkami. -
Powszechne stosowanie. JavaScript jest dominującym językiem front-endowym i ma swoje własne wymagania. Korzystanie z JSON jest koniecznością. Dlatego ogromna liczba usług internetowych wykorzystuje JSON jako format wymiany danych. Każde nowoczesne IDE obsługuje format JSON (w tym IntelliJ IDEA). Napisano wiele bibliotek dla różnych języków programowania, aby umożliwić pracę z JSON.
YAML
Początkowo YAML oznaczał „jeszcze inny język znaczników”. Kiedy się zaczął, był pozycjonowany jako konkurent XML. Teraz, wraz z upływem czasu, YAML zaczął oznaczać „YAML nie jest językiem znaczników”. Co to właściwie jest? Wyobraźmy sobie, że musimy stworzyć 3 klasy reprezentujące postacie w grze komputerowej: Wojownika, Maga i Złodzieja. Będą miały następujące cechy: siła, zwinność, wytrzymałość, zestaw broni. Oto jak wyglądałby plik YAML opisujący nasze klasy:
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
Plik YAML ma strukturę drzewa: niektóre elementy są zagnieżdżone w innych. Możemy kontrolować zagnieżdżanie za pomocą określonej liczby spacji, których używamy do oznaczenia każdego poziomu. Jakie są zalety formatu YAML?
-
Czytelne dla człowieka. Ponownie, nawet widząc plik YAML bez opisu, możesz łatwo zrozumieć obiekty, które opisuje. YAML jest tak czytelny dla człowieka, że strona yaml.org jest zwykłym plikiem YAML :)
-
Ścisłość. Struktura plików jest tworzona za pomocą spacji: nie ma potrzeby używania nawiasów ani cudzysłowów.
-
Obsługa natywnych struktur danych dla języków programowania. Ogromną przewagą YAML nad JSON i wieloma innymi formatami jest to, że obsługuje różne struktury danych. Zawierają:
-
!!mapa
Nieuporządkowany zestaw par klucz-wartość, które nie mogą mieć duplikatów; -
!!omap
Uporządkowana sekwencja par klucz-wartość, która nie może mieć duplikatów; -
!!pary:
uporządkowana sekwencja par klucz-wartość, które mogą mieć duplikaty; - !!set
Nieuporządkowana sekwencja wartości, które nie są sobie równe; - !!seq
Sekwencja dowolnych wartości;
Niektóre z tych struktur rozpoznasz z Javy! :) Oznacza to, że różne struktury danych z języków programowania mogą być serializowane do YAML.
-
-
Możliwość korzystania z kotwicy i aliasu
Te znaczniki pozwalają zidentyfikować jakiś element w pliku YAML, a następnie odwołać się do niego w pozostałej części pliku, jeśli powtarza się. Kotwica jest tworzona za pomocą symbolu & , a alias jest tworzony za pomocą * .
Załóżmy, że mamy plik opisujący książki Lwa Tołstoja. Aby uniknąć wpisywania nazwiska autora każdej książki, po prostu tworzymy kotwicę lwa i odwołujemy się do niej za pomocą aliasu, gdy jest to potrzebne:
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
Podczas analizowania tego pliku wartość „Lew Tołstoj” jest zastępowana w odpowiednich miejscach, w których mamy nasze aliasy.
- YAML może osadzać dane w innych formatach. Na przykład 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 } ]
Inne formaty serializacji
XML
Ten format jest oparty na drzewie znaczników.
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Każdy element składa się ze znacznika otwierającego i zamykającego (<> i </>). Każdy element może mieć elementy zagnieżdżone. XML to powszechny format, który jest tak samo dobry jak JSON i YAML (jeśli mówimy o prawdziwych projektach). Mamy osobną lekcję o XML .
BSON (binarny JSON)
Jak sama nazwa wskazuje, BSON jest bardzo podobny do JSON, ale nie jest czytelny dla człowieka i wykorzystuje dane binarne. W rezultacie bardzo dobrze nadaje się do przechowywania i przesyłania zdjęć oraz innych załączników. Ponadto BSON obsługuje niektóre typy danych niedostępne w JSON. Na przykład plik BSON może zawierać datę (w formacie milisekundowym) lub nawet fragment kodu JavaScript. Popularna baza danych MongoDB NoSQL przechowuje informacje w formacie BSON.Protokół oparty na pozycji
W niektórych sytuacjach musimy drastycznie zmniejszyć ilość przesyłanych danych (np. gdy mamy dużo danych i potrzebujemy zmniejszyć obciążenie). W takiej sytuacji możemy skorzystać z protokołu pozycyjnego, czyli przesyłać wartości parametrów bez nazw samych parametrów.
"Leo Tolstoy" | "Anna Karenina" | 1873
Dane w tym formacie zajmują kilka razy mniej miejsca niż pełny plik JSON. Oczywiście istnieją inne formaty serializacji, ale nie musisz znać ich wszystkich od razu :) Dobrze, jeśli znasz aktualne standardowe formaty branżowe podczas tworzenia aplikacji i pamiętasz ich zalety oraz różnice między nimi inny. I na tym nasza lekcja dobiega końca :) Nie zapomnij rozwiązać dzisiaj kilku zadań! Do następnego razu! :)
GO TO FULL VERSION