- docx (format Microsoft Word);
- pdf (format Adobe);
- mobi (powszechnie używany w urządzeniach Amazon Kindle);
- i wiele więcej (ePub, djvu, fb2...).
JSON
Notacja obiektu JavaScript. Już go trochę znasz! Mówiliśmy o tym w tym wykładzie , a tutaj przyjrzeliśmy się serializacji w JSON . Nie bez powodu otrzymała swoją nazwę. Obiekty Java przekonwertowane do formatu JSON w rzeczywistości wyglądają dokładnie tak, jak obiekty JavaScript. Nie musisz znać JavaScriptu, żeby zrozumieć znaczenie naszego obiektu:{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
}
Nie jest konieczne przekazywanie jednego obiektu. JSON może również zawierać tablicę obiektów:
[
{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
},
{
"title": "Бесы",
"author": "Федор Достоевский",
"year": 1872
},
{
"title": "Чайка",
"author": "Антон Чехов",
"year": 1896
}
]
Ponieważ JSON jest obiektem JavaScript, obsługuje następujące formaty danych JavaScript:
- smyczki;
- liczby (liczba);
- obiekty (obiekt);
- tablice (tablica);
- wartości logiczne (prawda i fałsz);
- zero.
-
Format czytelny dla człowieka. Jest to oczywista zaleta, jeśli użytkownikiem końcowym jest człowiek. Na przykład Twój serwer przechowuje bazę danych z rozkładami lotów. Klient będący człowiekiem żąda danych z tej bazy danych za pomocą aplikacji internetowej, siedząc w domu przy komputerze. Ponieważ musisz dostarczyć dane w formacie zrozumiałym dla niego, JSON jest doskonałym rozwiązaniem.
-
Prostota. Można powiedzieć, że to elementarne :) Powyżej podaliśmy przykład dwóch plików JSON. Nawet jeśli nigdy nie słyszałeś o istnieniu JavaScript (nie mówiąc już o jego obiektach), możesz łatwo zrozumieć, jakiego rodzaju obiekty są tam opisane.
Cała dokumentacja JSON to jedna strona internetowa z kilkoma obrazami. -
Rozpowszechniony. JavaScript jest dominującym językiem front-endu i to on dyktuje warunki. 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 kilka bibliotek do pracy z JSON dla wszystkich możliwych języków programowania.
YAML
Na początku swojego istnienia oznaczał Yet Another Markup Language – „kolejny język znaczników”. W tym czasie był pozycjonowany jako konkurent XML. Teraz, po upływie czasu, oznacza to „YAML Ain't Markup Language” („YAML nie jest językiem znaczników”). Jaki on jest? Wyobraźmy sobie, że musimy stworzyć 3 klasy postaci do naszej gry komputerowej: Wojownik, Mag i Złodziej. Będą mieli następujące cechy: siłę, zwinność, wytrzymałość i zestaw broni. Tak będzie wyglądał nasz plik YAML z opisami klas: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ę drzewiastą: niektóre elementy są zagnieżdżone w innych. Możemy kontrolować zagnieżdżanie, używając określonej liczby spacji do oznaczenia każdego poziomu. Jakie zalety ma format YAML?
-
Czytelne dla człowieka. Ponownie, nawet jeśli zobaczysz plik YAML bez opisu, możesz łatwo zrozumieć, jakie obiekty są tam opisane. YAML to stopień, w jakim czytelny dla człowieka jest fakt, że strona główna yaml.org jest zwykłym plikiem yaml :)
-
Ścisłość. Strukturę pliku tworzą spacje: nie ma potrzeby stosowania nawiasów ani cudzysłowów.
-
Obsługa struktur danych natywnych dla języków programowania. Ogromną przewagą YAML nad JSON i wieloma innymi formatami jest to, że obsługuje różne struktury danych. Pomiędzy nimi:
-
!!map
Nieuporządkowany zbiór par klucz:wartość bez możliwości duplikacji; -
!!omap
Uporządkowana sekwencja par klucz:wartość bez możliwości duplikatów; -
!!pairs:
Uporządkowana sekwencja par klucz:wartość z możliwością duplikacji; - !!set
Nieuporządkowany ciąg wartości, które nie są sobie równe; - !!seq
Sekwencja dowolnych wartości;
Niektóre z tych struktur będziesz znać z Javy! :) Dzięki tej funkcji można serializować różne struktury danych z języków programowania do formatu YAML.
-
-
Możliwość korzystania z kotwicy i aliasu
Tłumaczenie słów „kotwica” i „alias” - „kotwica” i „pseudonim”. W zasadzie dość trafnie opisuje istotę tych terminów w YAML.
Umożliwiają identyfikację elementu w pliku YAML i odwoływanie się do niego w pozostałej części pliku, jeśli występuje on wielokrotnie. Kotwica jest tworzona za pomocą symbolu,
&
a alias jest tworzony za pomocą*
.Załóżmy, że mamy plik z opisami książek Lwa Tołstoja. Aby uniknąć ręcznego wpisywania nazwiska autora za każdym razem, po prostu utworzymy kotwicę „leo” i będziemy się do niego odnosić, używając aliasu, gdy będzie 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
Gdy odczytamy ten plik jakimś parserem, w miejsce naszego aliasu w odpowiednich miejscach zostanie podstawiona wartość „Leo Tołstoj”.
- Możesz osadzać dane w innych formatach w YAML. 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-a
Format ten opiera się na tzw. drzewie tagó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 jest powszechnym formatem, nie gorszym od JSON i YAML (jeśli mówimy o zastosowaniu w prawdziwych projektach). Mamy osobny wykład na temat XML .
BSON (binarny JSON)
Jak sama nazwa wskazuje, jest bardzo podobny do JSON, ale nie jest czytelny dla człowieka i działa na danych w formacie binarnym. Dzięki temu przechowywanie i przesyłanie obrazów i innych załączników jest bardzo wygodne. Ponadto BSON obsługuje niektóre typy danych, które nie są dostępne w formacie JSON. Na przykład możesz zapisać datę (w formacie milisekundowym) lub nawet fragment kodu JavaScript w pliku BSON. Popularna baza danych NoSQL MongoDB przechowuje informacje w formacie BSON.Protokół oparty na pozycji
W niektórych sytuacjach musimy radykalnie zmniejszyć ilość przesyłanych danych (np. jeśli danych jest dużo i musimy zmniejszyć obciążenie). W tej sytuacji możemy zastosować protokół pozycyjny , czyli przekazać wartości parametrów bez nazw samych parametrów."Leo Tolstoy" | "Anna Karenina" | 1873
Dane w tym formacie zajmują znacznie mniej miejsca niż pełnoprawny plik JSON. Istnieją oczywiście inne formaty serializacji, ale nie trzeba ich wszystkich znać od razu :) Warto zapoznać się z formatami, które są obecnie standardem branżowym przy tworzeniu aplikacji i pamiętać o ich zaletach i różnicach między sobą . I nasz wykład dobiegł końca :) Nie zapomnijcie dziś rozwiązać kilku problemów! Do zobaczenia! :)
GO TO FULL VERSION