- docx (формат на Microsoft Word);
- pdf (формат на Adobe);
- mobi (често се използва на устройства Amazon Kindle);
- и много повече (ePub, djvu, fb2 и др.).
JSON
JavaScript обектна нотация. Вече знаете малко за този формат! Говорихме за това в този урок и разгледахме сериализацията в JSON точно тук . Името си получи с причина. Java обектите, преобразувани в JSON, всъщност изглеждат точно като обекти в JavaScript. Не е необходимо да знаете JavaScript, за да разберете нашия обект:{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
Не се ограничаваме до изпращането на един обект. Форматът JSON може също да представлява масив от обекти:
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
Тъй като JSON представлява JavaScript обекти, той поддържа следните формати на данни на JavaScript:
- струни;
- числа;
- обекти;
- масиви;
- булеви стойности (вярно и невярно);
- нула.
-
Четим от човека формат. Това е очевидно предимство, ако вашият краен потребител е човек. Да предположим например, че вашият сървър има база данни с разписание на полетите. Човешки клиент, седнал пред компютъра си у дома, изисква данни от тази база данни с помощта на уеб приложение. Тъй като трябва да предоставите данни във формат, който той може да разбере, JSON е чудесно решение.
-
Простота. Супер просто е :) По-горе дадохме пример за два JSON file. И дори да не сте чували за JavaScript (да не говорим за JavaScript обекти), можете лесно да разберете вида на обектите, описани там.
Цялата JSON documentация се състои от уеб page с няколко снимки. -
Широко разпространена употреба. JavaScript е доминиращият език за предния край и има свои собствени изисквания. Използването на JSON е задължително. Следователно огромен брой уеб услуги използват JSON като формат за обмен на данни. Всяка съвременна IDE поддържа формата JSON (включително IntelliJ IDEA). Написани са куп библиотеки за всички видове езици за програмиране, за да се даде възможност за работа с JSON.
YAML
Първоначално YAML означава „Още един език за маркиране“. Когато започна, беше позициониран като конкурент на XML. Сега, с течение на времето, YAML започна да означава "YAML не е език за маркиране". Какво точно е? Нека си представим, че трябва да създадем 3 класа, които да представят герои в компютърна игра: Warrior, Mage и Thief. Те ще имат следните характеристики: сила, ловкост, издръжливост, набор от оръжия. Ето How би изглеждал YAML файл, описващ нашите класове: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
YAML файлът има дървовидна структура: някои елементи са вложени в други. Можем да контролираме влагането, като използваме определен брой интервали, които използваме, за да обозначим всяко ниво. Какви са предимствата на YAML формата?
-
Човешко четимо. Отново, дори да видите YAML файл без описание, можете лесно да разберете обектите, които той описва. YAML е толкова четим от човека, че уебсайтът yaml.org е обикновен YAML файл :)
-
Компактност. Файловата структура се създава с помощта на интервали: няма нужда да използвате скоби or кавички.
-
Поддръжка на собствени структури от данни за езици за програмиране. Огромното предимство на YAML пред JSON и много други формати е, че поддържа различни структури от данни. Те включват:
-
!!map
Неподреден набор от двойки ключ-стойност, които не могат да имат дубликати; -
!!omap
Подредена поредица от двойки ключ-стойност, които не могат да имат дубликати; -
!!pairs:
Подредена поредица от двойки ключ-стойност, които могат да имат дубликати; - !!set
Неподредена поредица от стойности, които не са равни една на друга; - !!seq
Поредица от произволни стойности;
Ще разпознаете някои от тези структури от Java! :) Това означава, че различни структури от данни от езици за програмиране могат да бъдат сериализирани в YAML.
-
-
Възможност за използване на котва и псевдоним
Тези маркери ви позволяват да идентифицирате няHowъв елемент в YAML файл и след това да го използвате в останалата част от file, ако се появява многократно. Котвата се създава с помощта на символа & , а псевдонимът се създава с помощта на * .
Да предположим, че имаме файл, описващ книги на Лев Толстой. За да избегнем изписването на името на автора за всяка книга, ние просто създаваме лео котвата и се позоваваме на нея, използвайки псевдоним, когато имаме нужда от нея:
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
Когато този файл се анализира, стойността "Leo Tolstoy" се замества на правилните места, където имаме нашите псевдоними.
- YAML може да вгражда данни в други формати. Например 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 } ]
Други формати за сериализация
XML
Този формат се основава на дърво на тагове.<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
Всеки елемент се състои от отварящ и затварящ таг (<> и </>). Всеки елемент може да има вложени елементи. XML е често срещан формат, който е също толкова добър, колкото JSON и YAML (ако говорим за реални проекти). Имаме отделен урок за XML .
BSON (двоичен JSON)
Както подсказва името му, BSON е много подобен на JSON, но не е четим от хора и използва двоични данни. В резултат на това е много добър за съхранение и прехвърляне на изображения и други прикачени файлове. Освен това BSON поддържа някои типове данни, които не са налични в JSON. Например BSON файл може да включва дата (във формат на мorсекунди) or дори част от JavaScript code. Популярната база данни MongoDB NoSQL съхранява информация във формат BSON.Протокол, базиран на позиция
В някои ситуации трябва драстично да намалим количеството изпратени данни (например, ако имаме много данни и трябва да намалим натоварването). В тази ситуация можем да използваме протокола, базиран на позицията, тоест да изпратим стойности на параметри без имената на самите параметри."Leo Tolstoy" | "Anna Karenina" | 1873
Данните в този формат заемат няколко пъти по-малко място от пълен JSON файл. Разбира се, има и други формати за сериализиране, но не е нужно да знаете всички в момента :) Добре е, ако сте запознати с текущите индустриални стандартни формати, когато разработвате applications, и помните техните предимства и How се различават от един друг. И с това нашият урок приключва :) Не забравяйте да решите няколко задачи днес! До следващия път! :)