- docx (format ng Microsoft Word);
- pdf (Adobe format);
- mobi (karaniwang ginagamit sa mga aparatong Amazon Kindle);
- at marami pang iba (ePub, djvu, fb2...).
JSON
JavaScript Object Notation. Medyo pamilyar ka na sa kanya! Napag-usapan namin ito sa panayam na ito , at tiningnan namin ang serialization sa JSON dito . Nakuha nito ang pangalan nito para sa isang dahilan. Ang mga bagay sa Java na na-convert sa JSON ay talagang kamukha ng mga bagay sa JavaScript. Hindi mo kailangang malaman ang JavaScript upang maunawaan ang kahulugan ng aming bagay:{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
}
Hindi kinakailangan na ipasa ang isang bagay. Ang JSON ay maaari ding maglaman ng isang hanay ng mga bagay:
[
{
"title": "Война и мир",
"author": "Лев Толстой",
"year": 1869
},
{
"title": "Бесы",
"author": "Федор Достоевский",
"year": 1872
},
{
"title": "Чайка",
"author": "Антон Чехов",
"year": 1896
}
]
Dahil ang JSON ay isang JavaScript object, sinusuportahan nito ang mga sumusunod na format ng data ng JavaScript:
- mga string;
- mga numero (numero);
- mga bagay (bagay);
- arrays (array);
- boolean-значения (true и false);
- null.
-
Human-readable («человеко-читаемый») формат. Это очевидное преимущество, если твой конечный пользователь — человек. К примеру, на твоем serverе хранится база данных с расписанием авиаперелетов. Клиент-человек запрашивает данные из этой базы с помощью веб-applications, сидя дома за компьютером. Поскольку тебе нужно предоставить данные в формате, который он сможет понять, JSON будет отличным решением.
-
Простота. Можно сказать — elementрность :) Выше мы привели пример двух JSON-файлов. И даже если ты вообще не слышал о существовании JavaScript (и уж тем более о его an objectх), ты легко поймешь, что за an objectы там описаны.
Вся documentация JSON — это одна веб-page с парой картинок. -
Широкая распространенность. JavaScript — доминирующий язык фронтенда, и он диктует свои условия. Использование JSON — необходимость. Поэтому огромное число веб-сервисов используют JSON в качестве формата для обмена данными. Каждая современная IDE поддерживает JSON-формат (в том числе Intellij IDEA). Для работы с JSON написана куча библиотек для всех возможных языков программирования.
YAML
В начале своего существования расшифровывался How Yet Another Markup Language — «еще один язык разметки». В то время его позиционировали How конкурента XML. Now же, по прошествии времени, он расшифровывается How «YAML Ain’t Markup Language» («YAML — не язык разметки»). What же он из себя представляет? Давай представим, что нам нужно создать 3 класса персонажей для нашей компьютерной игры: Воин, Маг и Вор. У них буду следующие характеристики: сила, ловкость, выносливость, набор оружия. Вот 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-формат?
-
Human-readable. Опять же, даже увидев yaml-файл без описания, ты легко поймешь, Howие an objectы там описаны. YAML насколько хорошо читается человеком, что главная page yaml.org — это обычный yaml-файл :)
-
Компактность. Структура file формируется за счет пробелов: нет необходимости использовать скобки or кавычки.
-
Поддержка структур данных, «родных» для языков программирования. Огромное преимущество YAML перед JSON и многими другими форматами заключается в том, что он поддерживает разные структуры данных. В их числе:
-
!!map
Неупорядоченный набор пар ключ:meaning без возможности дубликатов; -
!!omap
Упорядоченная последовательность пар ключ:meaning без возможности дубликатов; -
!!pairs:
Упорядоченная последовательность пар ключ:meaning с возможностью дубликатов; - !!set
Неупорядоченная последовательность значений, которые не равны друг другу; - !!seq
Последовательность произвольных значений;
Некоторые из этих структур знакомы тебе по Java! :) За счет этой фичи в формат YAML можно сериализовать разные структуры данных из языков программирования.
-
-
Возможность использования anchor и alias
Перевод слов «anchor» и «alias» — «якорь» и «псевдоним». В принципе, он довольно точно описывает суть этих терминов в YAML.
Они позволяют тебе идентифицировать Howой-то элемент в yaml-файле, и ссылаться на него в остальных частях этого file, если он встречается повторно. Anchor создается с помощью символа
&
, а alias — с помощью*
.Допустим, у нас есть файл с описанием книг Льва Толстого. Whatбы не писать Name автора каждый раз вручную, мы просто создадим якорь «leo» и будем ссылаться на него с помощью алиаса, когда нам это будет нужно:
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
Когда мы будем считывать этот файл Howим-то parserом, на месте нашего алиаса в нужных местах будет подставляться meaning «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>
Каждый элемент состоит из открывающего и закрывающего тега (<> и </>). У каждого element могут быть вложенные элементы. XML — распространенный формат, не уступающий JSON и YAML (если говорить об использовании в реальных проектах). Об XML у нас есть отдельная лекция.
BSON (binary JSON)
Как и следует из его названия, очень похож на JSON, но не является human-readable и оперирует данными в двоичном формате. За счет этого он очень удобен при хранении и передаче изображений и других вложений. Кроме того, BSON поддерживает некоторые типы данных, недоступные в JSON. Например, в BSON-файл можно записать date (в формате миллисекунд) or даже кусок JavaScript codeа. Популярная NoSQL база данных MongoDB хранит информацию именно в BSON формате.Position based protocol
В некоторых ситуациях нам необходимо резко снизить количество передаваемых данных (например, если данных очень много и нужно уменьшить нагрузку). В этой ситуации мы можем использовать position based protocol, то есть передавать значения параметров без названий самих параметров."Leo Tolstoy" | "Anna Karenina" | 1873
Данные в таком формате занимают в разы меньше места, чем полноценный JSON файл. Конечно, существуют и другие форматы сериализации, но тебе сейчас не нужно знать их все :) Хорошо, если ты будешь знаком с теми форматами, которые сейчас являются промышленным standard при разработке приложений, и будешь помнить их преимущества и отличия друг от друга. А наша лекция на этом подошла к концу :) Не забудь решить пару задач сегодня! До новых встреч! :)
GO TO FULL VERSION