Вложенный объект в Java
JSON умеет вкладывать объекты друг в друга через вложенные фигурные скобки. В Java для этого достаточно объявить компонент с типом другого record или класса с полями.
Адрес и контакт клиента логично разделить: сначала тип для города и индекса, затем тип заказа с полем адреса:
public record GeoPoint(String city, String postal) {}
public record ClientOrder(int id, GeoPoint shipTo) {}
Запись в строку собирает один JSON-объект, где
значение shipTo само является объектом
с ключами city и postal:
import com.fasterxml.jackson.databind.ObjectMapper;
public record GeoPoint(String city, String postal) {}
public record ClientOrder(int id, GeoPoint shipTo) {}
public class Main {
public static void main(String[] args) throws Exception {
ClientOrder order = new ClientOrder(
501,
new GeoPoint("Oslo", "0150")
);
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(order));
}
}
Чтение из текста работает в обратном порядке: сначала
разбирается внешний объект, затем вложенный блок
для GeoPoint. Если внутренний тип нельзя
создать из JSON, разбор всего заказа завершится
ошибкой.
Объявите record DurationSlot
с компонентами hours и minutes,
затем MeetingPlan с title и
slot типа DurationSlot. Запишите
план с названием "sync" и длительностью
1 час 30 минут в JSON и выведите
строку.
Дана строка JSON:
String raw = "{\"title\":\"demo\",\"slot\":{\"hours\":0,\"minutes\":45}}";
Из этой строки
восстановите MeetingPlan и выведите
название и суммарные минуты как одно число
45.