На этом шаге мы рассмотрим десериализацию сложных объектов
На подобие с предыдущим шагом, приведем пример для десериализация объектов Cat. Файлы Cat.java и Zoo.java идентичны файлам с предыдущего шага.
import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import java.io.File; public class Main { public static void main(String[] args) throws JAXBException { File inFile = new File("cats.xml"); // Создаем Unmarshaller Unmarshaller unmarshaller = getUnMarshaller(Zoo.class, Cat.class); // Десериализуем Zoo zoo = (Zoo) unmarshaller.unmarshal(inFile); // Выводим результат System.out.println("десериализация завершена"); for (Cat cat : zoo.getPets()) { System.out.println("name = " + cat.getName() + ", age = " + cat.getAge()); } } /** * Функция для создания Unmarshaller. * * @param classes Список классов, которые участвуют в десериализации * @return Unmarshaller */ private static Unmarshaller getUnMarshaller(Class... classes) throws JAXBException { JAXBContext context = JAXBContext.newInstance(classes); Unmarshaller unmarshaller = context.createUnmarshaller(); return unmarshaller; } }
Проект можно взять здесь
Рис. 1. Вывод программы
Как видно из примера, десериализация оказалась ничем не сложнее сериализации.
На следующем шаге мы начнем рассматривать библиотеку Gson