Что такое сериализация?

Я начинаю программировать ООП и хотел бы знать, что означает сериализация на языке ООП?

118
11 марта '09 в 8:03
источник поделиться
14 ответов

Сериализация - это процесс превращения объекта в память в поток байтов, чтобы вы могли делать такие вещи, как хранить их на диске или отправлять по сети.

Deserialization - это обратный процесс: превращение потока байтов в объект в памяти.

115
11 марта '09 в 8:06
источник

Проще говоря, сериализация - это процесс преобразования объекта в поток байтов, чтобы его можно было передавать по сети или хранить в постоянном хранилище.

Десериализация - полная противоположность - извлечение потока байтов из сетевого или постоянного хранилища и преобразование его обратно в объект с тем же состоянием.

Нужно понять, как эти байты интерпретируются или обрабатываются так, что мы получаем один и тот же объект/одно и то же состояние. Есть разные способы достичь этого. Некоторые из них -

  1. XML: преобразовать объект в XML, передать его по сети или сохранить в файле /db. Получить его и преобразовать обратно в объект с таким же состоянием. В Java мы используем библиотеку JAXB (архитектура Java для привязки XML) (из java 6 она поставляется в комплекте с JDK).
  2. JSON: То же самое можно сделать путем преобразования объекта в JSON (нотация JavaScript-объекта). Опять же, есть библиотека GSON, которую можно использовать для этого.
  3. Или мы можем использовать сериализацию, предоставляемую самим языком ООП. Например, в Java вы можете сериализовать Object, сделав его реализующим Serializable interface и записав его в Object Stream.
68
30 авг. '14 в 21:36
источник

Объяснение через изображение:

Rex, my dog, is serialised!

Объяснение по аналогии:

Предположим, я разговариваю со своим приятелем по телефону и рассказываю ему о моем новом щенке.

Вот моя проблема: щенок это живое, дышащее млекопитающее. Как мне передать щенка по телефонной линии? Я не могу физически положить своего щенка в телефонную трубку.

Поэтому вместо этого мне придется передать изображение щенка по телефону. Другими словами, я затем сериализую свою собаку Рекс и посылаю ему сериализованную версию Рекса по телефонной линии:

{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }

Это идеальное представление - сериализация моей собаки.

Резюме:

Сериализация в основном означает преобразование моего собачьего Рекса во что-то другое - объект JSON - который затем может быть передан по телефонной линии в виде последовательности 1 и 0. Мой приятель из Нью-Йорка может затем перевести эти 1 и 0 обратно в объект JSON, чтобы у него было идеальное представление о моей собаке Рекс. Просто!

Любые вопросы? Просто оставьте комментарий.

40
01 февр. '18 в 4:25
источник

Проверьте это, это даст вам хорошее объяснение:

http://en.wikipedia.org/wiki/Serialization

Я думаю, что наиболее распространенное использование термина "сериализация" связано с преобразованием двоичного объекта в представление XML (или другой строки), чтобы его можно было хранить в базе данных/файле или отправлять по сети в веб-службе вызов. Deserialization - это обратный процесс - преобразование XML/string обратно в объект.

EDIT: Еще один термин, который вы можете встретить, - это маршаллинг /unmarshalling. Маршаллинг - это в основном та же концепция, что и сериализация, и разборчивость - это то же самое, что и десериализация.

14
11 марта '09 в 8:06
источник

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

5
26 февр. '10 в 14:12
источник

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

...

Эта иллюстрация показывает общий процесс сериализации

Overall process of serialization

...

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

С https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/

(акцент мой)

5
01 февр. '18 в 8:47
источник

Сериализация преобразует объект в сохраняемую последовательность бит.

чтобы вы могли сохранить эту последовательность в файл, db или отправить по сети.

позже вы можете десериализовать его на фактический объект и повторно использовать его, когда захотите.

Веб-службы и AJAX - наиболее распространенный пример сериализации. Объекты сериализованы перед отправкой ответа клиенту.

2
11 марта '09 в 8:10
источник

Сериализация - это не что иное, как перенос поддерживаемого java объекта в поддерживаемый файл.

                         (OR)

преобразование формы, поддерживаемой java, в поддерживаемую сеть. Основная область сериализации - это не что иное, как перенос данных с одного уровня на другой уровень... только сериализованные объекты, которые мы можем отправлять по сети.

1
08 нояб. '12 в 13:12
источник

Сериализация - это когда объект (кусок памяти) переводится в форму, когда состояние объекта может быть сохранено в файле (в качестве примера).

Просто рассматривайте это как создание файлов cookie - объект - тесто, cookie - это сериализованное тесто.

Итак, путем "сериализации" вы можете отправить cookie своему другу.

Что-то вроде этого: -)

1
11 марта '09 в 8:07
источник

Сериализация - это процесс преобразования объекта, поддерживаемого Java, С# или любого другого (языки ООП), в переносимую форму. Таким образом, он будет транспортироваться по сети или храниться на диске. Чтобы класс был сериализуемым, он должен реализовывать сериализуемый интерфейс.

1
23 сент. '17 в 4:48
источник

Сериализация - это процесс преобразования объекта в двоичный поток данных, чтобы он мог быть сохранен в файле или отправлен по сети, где он может быть восстановлен обратно на один и тот же объект.

Этот документ должен помочь вам подробно понять сериализацию Java.

0
29 июля '16 в 5:26
источник
Сериализация

связана с преобразованием двоичного объекта в представление XML (или другой строки), чтобы он мог быть сохранен в базе данных/файле или отправлен по сети в вызове веб-службы. Deserialization - это обратный процесс - преобразование XML/string обратно в объект.

0
26 февр. '10 в 13:32
источник

При создании (построении) фактического объекта (вещи) из класса (чертежа) необходимо сохранить объект (предмет), сериализируя его (разбивая его на основную атомную структуру) на пространство в памяти, (Вид вроде Transporter Star Treks). Вы разрушаете это в поток информации, который можно где-то транспортировать и хранить. Затем, когда вы хотите восстановить вещь, вы просто вытащите атомно сохраненный экземпляр обратно в объект. В отличие от instaniation.

0
24 дек. '13 в 13:35
источник

Сериализация превращает данные в линейную "строку" байтов.

Другие говорили более или менее то же самое, но я подчеркиваю, что компьютерные модели требуют, чтобы данные вписывались в одномерное адресное ОЗУ или постоянное хранилище.

Большинство вещей, которые являются "данными", по своей сути сериализуемы (даже если вы должны уменьшить абстрактную модель до линейной); не сериализуемые, скажем, сетевое соединение или сложная машина на основе состояний, такая как синтаксический анализатор.

0
11 марта '09 в 9:55
источник

Посмотрите другие вопросы по меткам или Задайте вопрос