Шаг 133.
Язык программирования Java.
Библиотека JAXB. Сериализация сложных объектов

На этом шаге мы рассмотрим сериализацию сложных объектов

Ранее мы привели примеры для сериализации и десериализации объектов, которые содержат поля примитивных типов. В случае, когда класс содержит поля, которые сами по себе является объектами, например, списками, то сериализация происходит немного по-другому. Обратимся к следующему примеру.


Рис. 1. Результат работы программы

Поговорим о нем поподробнее. Начнем с файла Cat.java. В пункте 1 мы говорим, что данное поле будет являться атрибутом тега, а не внутренним тегом будущего тега cat (его мы указали с помощью аннотации @XmlRootElement). Имя атрибута по умолчанию совпадает с именем поля. Если вы хотите сменить имя атрибута, то воспользуйтесь следующей записью:

@XmlAttribute(name = "НОВОЕ_ИМЯ")

Рассмотрим теперь файл Zoo.java. В данном классе полем является список домашних животных (котов). Если не указать пункт 1 и пункт 2, то имя тега каждого элемента будет называться pets. Поэтому в пункте 1 мы указываем, что каждый тег будет иметь имя cat. Более того, в пункте 2 мы указали, что все теги cat будут обернуты тегом pets (рисунок 1).

И, наконец, рассмотрим файл Main.java. Для сериализации полей, не являющимися примитивными типами, нужно указывать контексту JAXB их участие в сериализации. Это мы сделали в пункте 1.

На следующем шаге мы рассмотрим десериализацию сложных объектов

Предыдущий шаг Содержание Следующий шаг