Формат представления данных JSON. Библиотека Jackson

Формат представления данных JSON #

Формат представления данных JSON #

Презентацию по теме можно посмотреть по ссылке

Видео-запись: Rutube

Библиотека Jackson #

Презентацию по теме можно посмотреть по ссылке

Видео-запись: Rutube

Документация по теме #

Задание № 1. Использование низкоуровневого интерфейса Jackson #

Создайте функцию fun trianglesToJson(triangles: List<Triangle>): String, которая принимает список треугольников и возвращает JSON-документ в виде строки в следующем формате:

{
    "triangles": [
        {
            "description": "обычный треугольник",
            "id": "baa30333-23d6-4eba-a8ed-7c235adf4228",
            "registrationDateTime": "2024-07-27T00:10:41.129642513"
        },
        {
            "description": "точки расположены на отрезке",
            "id": "a6be5e23-b8d4-4d78-8aa3-1c204d0befc8",
            "registrationDateTime": "2024-07-10T17:26:41.129567382"
        }
    ]
}

Возьмите список всех треугольников из хранилища TriangleStorage (занятие 6) и выведите полученную строку в стандартный поток вывода вместо прежнего формата <id> <строковое представление треугольника>. Документ формируется заново при каждом запуске приложения.

При реализации функции используйте низкоуровневый интерфейс Jackson. Расстановка пробельных символов не проверяется: структура документа (объекты, ключи, значения) должна совпадать с примером.

Задание № 2. Использование средства отображения объектов #

Приложение уже принимает вторым аргументом имя константы перечисления Color (занятие 6, задание № 3). Измените смысл этого аргумента: теперь он задаёт цвет границы. Если аргумент указан, приложение выводит сведения только о треугольниках, у которых совпадает цвет границы. Фильтрация по цвету заливки больше не используется, прежний формат вывода заменяется JSON-документом. Если аргумент не указан или не совпадает ни с одной константой перечисления Color, приложение выводит сообщение об ошибке и завершает работу с ненулевым кодом возврата (как в занятии 6).

{
  "borderColor": "RED",
  "triangles": [
    {
      "id": "a6be5e23-b8d4-4d78-8aa3-1c204d0befc8",
      "sideA": 2.0, "sideB": 3.0, "sideC": 5.0
    },
    {
      "id": "baa30333-23d6-4eba-a8ed-7c235adf4228",
      "sideA": 2.0, "sideB": 3.0, "sideC": 4.0
    }
  ]
}

Для формирования результирующего JSON-документа используйте высокоуровневый интерфейс представления. Создайте два дополнительных класса:

  • класс-обёртку, описывающий документ целиком: свойство borderColor типа Color и свойство triangles типа List<...>;
  • класс, описывающий треугольник в выводе: свойства id (тип UUID), sideA, sideB, sideC (тип Double).

Имена свойств этих классов должны совпадать с ключами из примера; при необходимости задайте их аннотацией @JsonProperty.

Остальные свойства исходного класса Triangle в вывод не попадают: исключите их с помощью аннотации @JsonIgnore либо выносите в отдельный класс только нужные свойства. Для записи результата используйте mapper.writeValue(System.out, wrapper). Расстановка пробельных символов не проверяется: структура документа (объекты, ключи, значения) должна совпадать с примером.

© A. M. Васильев, 2026, CC BY-SA 4.0, andrey@crafted.su