Введение в сериализацию JSON в Java
Сериализация - перевод значения в последовательность символов, которую можно сохранить или передать. Обратный шаг - десериализация: из текста снова получают поля объекта с теми же данными.
Для обмена между программами часто берут формат JSON: фигурные скобки, пары имя-значение, кавычки у строк. В Java нет встроенного кодека для произвольных классов, но библиотека Jackson по полям типа строит текст и читает его обратно.
Запись каталога удобно описать через record
с названием и количеством. Компилятор даёт конструктор
и методы доступа к компонентам, а Jackson использует
их как свойства JSON:
public record CatalogItem(String title, int qty) {}
После подключения Jackson готовый объект можно
превратить в одну строку. Для элемента с названием
"notebook" и количеством 3 текст
будет по смыслу равен
{"title":"notebook","qty":3} - имена ключей
совпадают с именами компонентов record.
Полный фрагмент программы с записью в строку выглядит так:
import com.fasterxml.jackson.databind.ObjectMapper;
public record CatalogItem(String title, int qty) {}
public class Main {
public static void main(String[] args) throws Exception {
CatalogItem item = new CatalogItem("notebook", 3);
ObjectMapper mapper = new ObjectMapper();
String text = mapper.writeValueAsString(item);
System.out.println(text);
}
}
В консоли появляется JSON без переносов. Эту же строку
можно передать в другой процесс или положить в файл,
а затем восстановить CatalogItem с теми же
значениями полей.
Сам record в обычном коде ведёт себя как
обычно: сравнение по компонентам и неизменяемость
остаются. Дополнительно появляется мост между объектом
в памяти и текстовым представлением через
ObjectMapper.