2. Сериализация
Примеры из лекций и входной код для выполнения заданий находится в репозитории https://github.com/AltmanEA/edu-serialization.
Перед выполнением прочитайте замечания по порядку выполнения заданий и поиску информации из первой работы.
-
Библиотека jackson
- Изучите документацию к классу
SimpleDateFormat
и создайте формат, который бы выводил дату в таком виде:2021.01.22
. Создайте объект типаObjectMapper
и установите его свойствоdateFormat
равным созданному формату. - Создайте класс
Lesson
со свойствамиname: String
иdate: Date
. Создайте объект этого класса со свойствами, указанными ниже, и выполните его сериализацию в формат JSON. В результате должно получиться примерно следующее:
{"name":"Java Date","date":"2021.01.22"}
- Добавьте аннотацию
@JsonFormat
к свойствуdate: Date
с такими аргументами, чтобы установить формат вывода даты в виде:"22.01.2021"
и выполните еще раз сериализацию объекта из предыдущего пункта. - Определите, какой формат будет использоваться при одновременном использовании двух способов задания формата данных.
- Изучите документацию к классу
-
Библиотека kotlinx.serialization
- Создайте класс
Course
с свойствамиname: String
иperson: Person?
. Создайте объект этого класса со свойствамиMath
иPerson("Leonard Euler")
и переведите его в формат Json. - Используя аннотацию
@SerialName
настройте преобразование, чтобы объект выводился в таком виде:
{"name":"Math","tutor":{"firstname":"Leonard","surname":"Euler"}}
- Декодируйте из строки
"{\"name\": \"Phys\"}"
формата Json объект типаCourse
и распечатайте полученный объект (сделайтеCourse
классом данных). - На основе полученных результатов сделайте выводы о том, как обрабатываются
null-типы
.
- Создайте класс
-
Настройка сериализации
- Создайте класс перечисления
WeekType
для типа недель учебного плана с возможными значениями:TRAINING, SESSION, HOLIDAY
. - Сериализуйте следующий массив:
arrayListOf( 1 to WeekType.TRAINING, 2 to WeekType.TRAINING, 3 to WeekType.SESSION, 4 to WeekType.HOLIDAY )
- Создайте класс
Week
со свойствамиnumber: Int
иtype: WeekType
, преобразуйте массив из предыдущего пункта в массив элементов типаWeek
и сериализуйте его. - Создайте
object WeekTypeSerializer : KSerializer<WeekType>
, который заменял бы типы недель на"Обучение", "Сессия" и "Каникулы"
соответственно. Укажите его для использования для свойстваtype: WeekType
и сериализуйте снова массив из предыдущего пункта.
- Создайте класс перечисления