Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Сериализация простыми словами

#java #android #serialize


Много раз встречал эту "сериализацию" на разных ресурсах, часто связано с JSON.

Объясните, пожалуйста, простыми словами, что такое сериализация, где и зачем ее применяют ?
    


Ответы

Ответ 1



Сериализация — это сохранение/преобразование объекта или дерева объектов в какой-либо формат с тем, чтобы потом эти объекты можно было восстановить из этого формата. Используется, например, для сохранения состояния программы (то есть, некоторых её объектов) между запусками. Или для передачи данных между различными экземплярами программы (или различными программами), например, по сети. Главная идея состоит в том, что сериализованный формат — набор байт или строка, которую можно легко сохранить на диск или передать другому процессу или например по сети, в отличие от самого объекта. А значит, задача сохранения объекта/группы объектов при этом сводится к простой задаче сохранения набора байт или строки. JSON — один из популярных форматов для сериализации, он текстовый, легковесный и легко читается человеком. Пример: если у вас есть класс class Test { int length; String name; public Test(int length, String name) { this.length = length; this.name = name; } } Объект этого класса в сериализованной форме может иметь вид { "length": 25, "name": "Имя" } Саму сериализацию (и десериализацию) можно производить вручную, или пользоваться соответствующими библиотеками/фреймворками. Существуют и бинарные форматы сериализации.

Ответ 2



Сериализация в общем виде - это процесс сохранения объекта в виде последовательности байт, чтобы в будущем по этой последовательности можно было бы восстановить исходный объект. В частном случае - это может быть сохранение в текстовую строку, хотя это далеко не обязательно. Если объект сериализуется в текстовую строку, то тут могут быть разные форматы, включая XML и упомянутый в вопросе JSON. Последний для этой цели наиболее популярен в последнее время, т.к. JSON - это и так представление объекта в том формате, как объект создается в JavaScript. Собственно, JSON и переводится как JavaScript Object Notation. Сериализацию можно использовать для хранения объектов на диске, для передачи его по сети или для передачи объекта другому процессу. Процесс, обратный сериализации, называется десереализация. В случае, если другой процесс получает строку JSON, то он должен десереализовать строку в объект.

Ответ 3



Если на кошках Вы пишете эмулятор кота - тамагочи. У вас есть объект класс cat class Cat { private int age; private int weight; // other cat logic } Вы хотите, чтобы при следующем запуске приложения этот же кот продолжал жить своей жизнью, а не пересоздался заново. Для этого вы реализуете сериализацию\десериализацию кота - то есть созранение\загрузку. Как - так как вам удобно. Можно сделать его Serializable и хранить в бинарном виде, можно сохранять в текстовый файл как JSON (JavaScript Object Notation), можно в базе хранить. Главное - вы сохраняете каким-то образом его состояние (в данном случае - поля), и потом, когда вам это будет нужно, их загружаете. Так же сериализованного кота можно будет например передать по сети на сервер. То есть вы передаете его состояние, а сервер у себя создаст новый объект класса Cat и установит у него это состояние (age и weight).

Ответ 4



Сериализация используется для хранения сущностей в виде строки. Например можно взять объект, сериализовать и записать в базу данных. Json - формат представления данных. Он может представлять объекты или массивы. Эти сущности также можно сериализовать. Если вывести сериализованый объект в Json, то можно получить строку сериализованного объекта.

Комментариев нет:

Отправить комментарий