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и сериализуйте снова массив из предыдущего пункта.
- Создайте класс перечисления