Ответ
В Java распространены следующие форматы для обмена и хранения данных:
| Формат | Характеристики | Типичное применение | Пример библиотеки/API |
|---|---|---|---|
| JSON | Текстовый, человекочитаемый, основан на JavaScript. | REST API, конфигурации, обмен данными между веб-сервисами. | Jackson (де-факто стандарт), Gson. |
| XML | Текстовый, структурированный, с поддержкой схем (XSD). | SOAP-веб-сервисы, конфигурационные файлы (например, Spring XML), legacy-системы. | JAXB (Java Architecture for XML Binding), DOM/SAX парсеры. |
| Protocol Buffers (Protobuf) | Бинарный, компактный и быстрый. Требует предварительной схемы (.proto). |
Высокопроизводительная межсервисная коммуникация (gRPC), сериализация для кэширования. | protobuf-java (официальная библиотека от Google). |
| YAML | Текстовый, ориентированный на данные, с отступами. | Конфигурационные файлы (Spring Boot, Kubernetes). | SnakeYAML, Jackson YAML. |
| CSV | Простой текстовый табличный формат. | Экспорт/импорт данных, отчеты, интеграция с табличными процессорами. | Apache Commons CSV, OpenCSV. |
Пример сериализации в JSON с Jackson:
ObjectMapper mapper = new ObjectMapper();
MyObject obj = new MyObject("value");
String json = mapper.writeValueAsString(obj); // Сериализация
MyObject deserialized = mapper.readValue(json, MyObject.class); // Десериализация
Выбор формата зависит от требований: читаемость (JSON/YAML), производительность и размер (Protobuf), стандартизация (XML/SOAP).