Что такое код wddx_deserialize

Сериализация/Десериализация списка объектов в XML

у него есть класс наследник Circle

Объект XmlColor — из статьи Сериализация несереализируемого:

Я создаю список объектов

и так несколько различных объектов в рендомных местах.

при сериализации использую такой код:

ну вроде бы всё не плохо.

а вот Десериализация.
вот код

и возвращается в мой список всего 1 элемент.

и я не могу понять в чем дело.

подскажите в десериализации.

p.s. уже реализована сериализация в *.bin и в формат *.json
это обучающее приложение и это моя первая сериализация. вполне вероятного какой-то атрибут не дал. по-этому прошу подсказать или дать толковую стать по моей теме.

09.07.2013, 20:44

XML сериализация списка
По какой схеме нужно сериализовать однонаправленный упорядоченный список? Просмотр всех элементов.

Сериализация и десериализация
Доброго вечера. Возникло странное непонимание принципов сериализации. Дело в том, что я не встречал.

Сериализация / десериализация
доброе время суток=) такое задание — отправить объект класса с приложения клиента на сервер .

Protobuf сериализация десериализация
Добрый день уважаемые форумчане. Помогите разобраться. Имеется клиент серверное приложение. Как.

Зачем нужен serializeUser и deserializeUser, а так же process.nextTick?

Использую passport-vkontakte для авторизации в приложении через VK.
Два вопроса:
1) Зачем нужен serializeUser и deserializeUser
2) Зачем нужен processNexttick

Про первый пункт:

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

Про второй пункт:

«asynchronous verification, for effect. » вообще непонятный комментарий, к чему тут этот nextTick? Что будет, если я его уберу?

XML сериализация и десериализация произвольных объектов в C#

Работу с XML в C# условно можно разделить на четыре части, в зависимости от решаемых задач.

  • Стандартный разбор (парсинг) и формирование XML при помощи DOM, Xpath и т. п.;
  • Сериализация и десериализация объектов, имеющих для этого штатные средства (например, DataTable);
  • Сериализация и десериализация произвольных объектов, не относящихся к предыдущей части;
  • Валидация структуры XML документов.

В этой статье речь пойдет именно о третьей части.

Создадим простой класс, который будет содержать единственное свойство в виде строки. Так как этот класс мы впоследствии будем сериализовать в XML, то сразу же отметим его атрибутом Serializable и сделаем его открытым (public).

How to Deserialize XML document

How do I Deserialize this XML document:

that don’t seem to work :-(

17 Answers 17

Here’s a working version. I changed the XmlElementAttribute labels to XmlElement because in the xml the StockNumber, Make and Model values are elements, not attributes. Also I removed the reader.ReadToEnd(); (that function reads the whole stream and returns a string, so the Deserialze() function couldn’t use the reader anymore. the position was at the end of the stream). I also took a few liberties with the naming :).

Here are the classes:

The Deserialize function:

And the slightly tweaked xml (I needed to add a new element to wrap . Net is picky about deserializing arrays):

How about you just save the xml to a file, and use xsd to generate C# classes?

  1. Write the file to disk (I named it foo.xml)
  2. Generate the xsd: xsd foo.xml
  3. Generate the C#: xsd foo.xsd /classes

Et voila — and C# code file that should be able to read the data via XmlSerializer :

(include the generated foo.cs in the project)

You have two possibilities.

Method 1. XSD tool

Suppose that you have your XML file in this location C:\path\to\xml\file.xml

  1. Open Developer Command Prompt
    You can find it in Start Menu > Programs > Microsoft Visual Studio 2012 > Visual Studio Tools Or if you have Windows 8 can just start typing Developer Command Prompt in Start screen
  2. Change location to your XML file directory by typing cd /D «C:\path\to\xml»
  3. Create XSD file from your xml file by typing xsd file.xml
  4. Create C# classes by typing xsd /c file.xsd

And that’s it! You have generated C# classes from xml file in C:\path\to\xml\file.cs

Method 2 — Paste special

Required Visual Studio 2012+

  1. Copy content of your XML file to clipboard
  2. Add to your solution new, empty class file ( Shift + Alt + C )
  3. Open that file and in menu click Edit > Paste special > Paste XML As Classes

Usage

Usage is very simple with this helper class:

Сериализация (Serialization) в C#

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

Классы для сериализации располагаются в двух пространствах имен: System.Runtime.Serialization и System.Xml.Serialization .

Механизмы сериализации

Для сериализации в .NET доступно 4 механизма:

  • сериализатор контрактов данных
  • двоичный сериализатор
  • XML сериализатор ( XmlSerializer )
  • интерфейс IXmlSerializable

Первые три являются готовыми механизмами для сериализации и выполняют всю работу самостоятельно, интерфейс IXmlSerializable предполагает реализацию механизма сериализации самостоятельно.

Наличие трех разных механизмов сериализации является исторически сложившимся.

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

Илон Маск рекомендует:  Шаблон сайта для фотографов HTML, CSS, 8 страниц

Двоичный сериализатор прост в применении, хорошо автоматизирован и поддерживается повсеместно в .NET. Двоичная сериализация используется инфраструктурой Remoting, в т.ч. при взаимодействии между двумя доменами приложений в одном и том же процессе. Двоичный сериализатор работает быстрее чем сериализатор контрактов данных, но так дает худшую переносимость, поскольку тесно связывает внутреннюю структуру типа с форматом сериализованных данных. Он также не может быть использован для получения XML.

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

Реализация интерфейса IXmlSerializable предполагает самостоятельное выполнение сериализации с помощью XmlReader и XmlWriter .

Вывод сериализатора контрактов данных и двоичного сериализатора оформляется с помощью подключаемого форматера. Форматер приводит форму финального представления в соответствие с конкретной средой или контекстом сериализации. Доступно два форматера: форматер XML и двоичный форматер. XML форматер используется в контексет чтения/записи XML, тектовых файлов и потоков, обмена сообщениями SOAP. Двоичный форматер используется в контексте произвольного потока байт. Двоичный вывод по размерам обычно меньше чем XML, иногда значительно. Теоретически механизм сериалзиции не связан с форматером, но на практике сериализатор контрактов данных использует XML форматер, а двоичный сериализатор — двоичный форматер.

Сериализатор контрактов данных

Использование сериализатора контрактов данных предполагает следующие три шага

  • выбрать класс для использования: DataContractSerializer или NetDataContractSerializer
  • добавить сериализуемым типам и членам атрибуты [DataContract] и [DataMember] (соответственно)
  • создать экземпляр сериализатора и вызвать его метод WriteObject или ReadObject

Существует два сериализатора контрактов данных:

  • DataContractSerializer — обеспечивает слабую привязку типов .NET к типам контрактов данных. Может генерировать совместимый со стандартами XML код. Требует предварительной явной регистрации сериализуемых производных типов, чтобы иметь возможность сопоставлять имена контрактов данных с именами типов .NET
  • NetDataContractSerializer — характеризуется тесной привязкой типов .NET к типам контрактов данных, не требует явной регистрации сериализуемых производных типов, т.к. самостоятельно записывает полные имена типов и сборок сериализуемых типов

После выбора сериализатора необходимо всем сериализуемым типам добавить атрибут [DataContract] , а их членам, которые необходимо включить в сериализацию, — атрибуты [DataMember] :

Сериализация в Java

Зачем сериализация нужна?

В сегодняшнем мире типичное промышленное приложение будет иметь множество компонентов и будет распространено через различные системы и сети. В Java всё представлено в виде объектов; Если двум компонентам Java необходимо общаться друг с другом, то им необходим механизм для обмена данными. Есть несколько способов реализовать этот механизм. Первый способ это разработать собственный протокол и передать объект. Это означает, что получатель должен знать протокол, используемый отправителем для воссоздания объекта, что усложняет разработку сторонних компонентов. Следовательно, должен быть универсальный и эффективный протокол передачи объектов между компонентами. Сериализация создана для этого, и компоненты Java используют этот протокол для передачи объектов.

Рисунок 1 демонстрирует высоко-уровневое представление клиент-серверной коммуникации, где объект передаётся с клиента на сервер посредством сериализации.

Рисунок 1.

Как сериализовать объект?

Для начала следует убедиться, что класс сериализуемого объекта реализует интерфейс java.io.Serializable как показано в листинге 1.

class TestSerial implements Serializable <
public byte version = 100;
public byte count = 0;
>

* This source code was highlighted with Source Code Highlighter .

В Листинге 1 только одна вещь отличается от создания нормального класса, это реализация интерфейса java.io.Serializable . Интерфейс Serializable это интерфейс-маркер; в нём не задекларировано ни одного метода. Но говорит сериализующему механизму, что класс может быть сериализован.

Теперь у нас есть всё необходимое для сериализации объекта, следующим шагом будет фактическая сериализация объекта. Она делается вызовом метода writeObject() класса java.io.ObjectOutputStream , как показано в листинге 2.

public static void main( String args[]) throws IOException <
FileOutputStream fos = new FileOutputStream( «temp.out» );
ObjectOutputStream oos = new ObjectOutputStream(fos);
TestSerial ts = new TestSerial();
oos.writeObject(ts);
oos.flush();
oos.close();
>

* This source code was highlighted with Source Code Highlighter .

В листинге 2 показано сохранение состояния экземпляра TestSerial в файл с именем temp.out

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

public static void main( String args[]) throws IOException <
FileInputStream fis = new FileInputStream( «temp.out» );
ObjectInputStream oin = new ObjectInputStream(fis);
TestSerial ts = (TestSerial) oin.readObject();
System. out .println( «version=» +ts.version);
>

* This source code was highlighted with Source Code Highlighter .

Восстановление объекта происходит с помощью вызова метода oin.readObject() . В методе происходит чтение набора байт из файла и создаие точной копии графа оригинального объекта. oin.readObject() может прочитать любой сериализованный объект, поэтому необходимо полученный объект приводить к конкретному типу.
Выполненный код выведет version=100 в стандартный вывод.

Формат сериализованного объекта

Как должен выглядеть сериализованный объект? Вспомните простой код из предыдущего раздела, который сериализует объект класса TestSerial и записывает в temp.out . В листинге 4 показано содержимое файла temp.out , в шестнадцатеричном виде.

AC ED 00 05 73 72 00 0A 53 65 72 69 61 6C 54 65
73 74 A0 0C 34 00 FE B1 DD F9 02 00 02 42 00 05
63 6F 75 6E 74 42 00 07 76 65 72 73 69 6F 6E 78
70 00 64

Если вы снова посмотрите на TestSerial , то увидите, что у него всего 2 байтовых члена. Как показано в листинге 5.

public byte version = 100;
public byte count = 0;

* This source code was highlighted with Source Code Highlighter .

Размер байтовой переменной один байт, и следовательно полный размер объекта (без заголовка) — два байта. Но размер сериализованного объекта 51 байт. Удивлены? Откуда взялись эти дополнительные байты и что они обозначают? Они добавлены сериализующим алгоритмом и необходимы для воссоздания объекта. В следующем абзаце будет подробно описан этот алгоритм.

Алгоритм сериализации Java

К этому моменту у вас уже должно быть достаточно знаний, чтобы сериализовать объект. Но как работает этот механизм? Алгоритм сериализации делает следующие вещи:

  • запись метаданных о классе ассоциированном с объектом
  • рекурсивная запись описания суперклассов, до тех пор пока не будет достигнут java.lang.object
  • после окончания записи метаданных начинается запись фактических данных ассоциированных с экземпляром, только в этот раз начинается запись с самого верхнего суперкласса
  • рекурсивная запись данных ассоциированных с экземпляром начиная с самого низшего суперкласса
Илон Маск рекомендует:  Последняя линия справа

В листинге 6 указан пример охватывающий все возможные случаи сериализации

class parent implements Serializable <
int parentVersion = 10;
>

class contain implements Serializable <
int containVersion = 11;
>
public class SerialTest extends parent implements Serializable <
int version = 66;
contain con = new contain();

public int getVersion() <
return version;
>
public static void main( String args[]) throws IOException <
FileOutputStream fos = new FileOutputStream( «temp.out» );
ObjectOutputStream oos = new ObjectOutputStream(fos);
SerialTest st = new SerialTest();
oos.writeObject(st);
oos.flush();
oos.close();
>
>

* This source code was highlighted with Source Code Highlighter .

В примере сериализуется объект класса SerialTest , который наследуется от parent и содержит объект-контейнер класса contain . В листинге 7 показан сериализованный объект.

AC ED 00 05 73 72 00 0A 53 65 72 69 61 6C 54 65
73 74 05 52 81 5A AC 66 02 F6 02 00 02 49 00 07
76 65 72 73 69 6F 6E 4C 00 03 63 6F 6E 74 00 09
4C 63 6F 6E 74 61 69 6E 3B 78 72 00 06 70 61 72
65 6E 74 0E DB D2 BD 85 EE 63 7A 02 00 01 49 00
0D 70 61 72 65 6E 74 56 65 72 73 69 6F 6E 78 70
00 00 00 0A 00 00 00 42 73 72 00 07 63 6F 6E 74
61 69 6E FC BB E6 0E FB CB 60 C7 02 00 01 49 00
0E 63 6F 6E 74 61 69 6E 56 65 72 73 69 6F 6E 78
70 00 00 00 0B

На рисунке 2 показан сценарий алгоритма сериализации.

Рисунок 2.

Давайте рассмотрим, что собой представляет каждый байт в сериализованном объекте. В начале идёт информация о протоколе сериализации:

  • AC ED: STREAM_MAGIC . Говорит о том, что используется протокол сериазизации.
  • 00 05: STREAM_VERSION . Версия сериализации.
  • 0x73: TC_OBJECT . Обозначение нового объекта.

На первом шаге алгоритм сериализации записывает описание класса ассоциированного с объектом. В примере был сериализован объект класса SerialTest , следовательно алгоритм начал записывать описание класса SerailTest .

  • 0x72: TC_CLASSDESC . Обозначение нового класса.
  • 00 0A : Длина имени класса.
  • 53 65 72 69 61 6c 54 65 73 74: SerialTest , имя класса.
  • 05 52 81 5A AC 66 02 F6: SerialVersionUID , идентификатор класса.
  • 0x02 : Различные флаги. Этот специфический флаг говорит о том, что объект поддерживает сериализацию.
  • 00 02 : Число полей в классе.

Теперь алгоритм записывает поле int version = 66; .

  • 0x49 : Код типа поля. 49 это «I», которое закреплено за Int.
  • 00 07 : Длина имени поля.
  • 76 65 72 73 69 6F 6E: version , имя поля.

Затем алгоритм записывает следующее поле, contain con = new contain(); . Это объект следовательно будет записано каноническое JVM обозначение этого поля.

  • 0x74: TC_STRING . Обозначает новую строку.
  • 00 09 : Длина строки.
  • 4C 63 6F 6E 74 61 69 6E 3B: Lcontain; , Каноническое JVM обозначаение.
  • 0x78: TC_ENDBLOCKDATA , Конец опционального блока данных для объекта.

Следующим шагом алгоритма является запись описания класса parent , который является непосредственным суперклассом для SerialTest .

  • 0x72: TC_CLASSDESC . Обозначение нового класса.
  • 00 06 : Длина имени класса.
  • 70 61 72 65 6E 74: parent , имя класса
  • 0E DB D2 BD 85 EE 63 7A: SerialVersionUID , идентификатор класса.
  • 0x02 : Различные флаги. Этот флаг обозначает что класс поддерживает сериализацию.
  • 00 01 : Число полей в классе.

Теперь алгоритм записывает описание полей класса parent , класс имеет одно поле, int parentVersion = 100; .

  • 0x49 : Код типа поля. 49 обозначает «I», которое закреплено за Int.
  • 00 0D : Длина имени поля.
  • 70 61 72 65 6E 74 56 65 72 73 69 6F 6E : parentVersion, имя поля.
  • 0x78: TC_ENDBLOCKDATA , конец опционального блока данных для объекта.
  • 0x70: TC_NULL , обозначает то что больше нет суперклассов, потому что мы достигли верха иерархии классов.

До этого алгоритм сериализации записывал описание классов ассоциированных с объектом и всех его суперклассов. Теперь будут записаны фактические данные ассоциированные с объектом. Сначала записываются члены класса parent :

  • 00 00 00 0A: 10 , Значение parentVersion .

Дальше перемещаемся в SerialTest

  • 00 00 00 42: 66 , Значение version .

Следующие несколько байт очень интересны. Алгоритму необходимо записать информацию объекте класса contain .

* This source code was highlighted with Source Code Highlighter .

Заключение

В этой статье вы увидели как сериализовать объект, и узнали как работает алгоритм сериализации. Я надеюсь эта статья помогла вам лучше понять что происходит, когда вы сериализуете объект.

Об авторе

Sathiskumar Palaniappan имеет более чем 4-х летний опыт работы в IT-индестрии, и работает с Java технологиями более 3 лет. На данный момент он работает system software engineer в Java Technology Center, IBM Labs. Также имеет опыт работы в телекоммуникационной индустрии.

Как десериализовать XML-документ

Как десериализовать этот XML-документ:

У меня есть это:

которые, похоже, не работают: — (

Здесь рабочая версия. Я заменил метки XmlElementAttribute на XmlElement, потому что в xml значения StockNumber, Make и Model являются элементами, а не атрибутами. Также я удалил reader.ReadToEnd(); (что функция читает весь поток и возвращает строку, поэтому функция Deserialze() больше не может использовать читателя. позиция была в конце потока). Я также взял несколько свобод с наименованием:).

И слегка измененный xml (мне нужно было добавить новый элемент для переноса . NET является придирчивым к десериализации массивов):

Как насчет того, чтобы просто сохранить XML в файл и использовать xsd для генерации классов С#?

  1. Записать файл на диск (я назвал его foo.xml)
  2. Создайте xsd: xsd foo.xml
  3. Создайте С#: xsd foo.xsd/classes

Et voila — и файл кода С#, который должен быть в состоянии прочитать данные через XmlSerializer :

(включите сгенерированный foo.cs в проект)

У вас есть две возможности.

Метод 1. Инструмент XSD

Предположим, что у вас есть ваш XML файл в этом месте C:\path\to\xml\file.xml

  • Откройте Командная строка разработчика
    Вы можете найти его в Start Menu > Programs > Microsoft Visual Studio 2012 > Visual Studio Tools Или, если у вас есть Windows 8, можно просто начать набирать Командная строка разработчика на экране запуска
  • Измените местоположение в каталоге файла XML, набрав cd /D «C:\path\to\xml»
  • Создайте XSD файл из вашего xml файла, набрав xsd file.xml
  • Создайте классы С#, набрав xsd /c file.xsd
Илон Маск рекомендует:  Добавление кнопок социальных сетей на сайт

И это! Вы создали классы С# из XML файла в C:\path\to\xml\file.cs

Способ 2 — Вставить специальный

Требуемая Visual Studio 2012 +

  • Скопировать содержимое вашего XML файла в буфер обмена
  • Добавьте к вашему решению новый пустой файл класса ( Shift + Alt + C )
  • Откройте этот файл и в меню нажмите Edit > Paste special > Paste XML As Classes

Использование

Использование этого класса-помощника очень просто:

Что такое код wddx_deserialize

(PHP 3>= 3.0.7, PHP 4)

wddx_deserialize — десериализует WDDX-пакет.

Описание

mixed wddx_deserialize (string packet)

wddx_deserialize() принимает строку packet и десериализует её. Возвращает результат, который может быть string, number или array. Обратите внимание, что структуры десериализуются в ассоциативные массивы.


Назад Оглавление Вперёд
wddx_add_vars Вверх wddx_packet_end

Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:

deserialization

Большой англо-русский и русско-английский словарь . 2001 .

Смотреть что такое «deserialization» в других словарях:

deserialization — noun The act or process of deserializing … Wiktionary

Serialization — This article is about data structure encoding. For other uses, see Serialization (disambiguation). In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state… … Wikipedia

Media Independent Interface — The Media Independent Interface (MII) was originally defined as a standard interface used to connect a Fast Ethernet (i.e. 100 Mbit/s) MAC block to a PHY chip. The MII design has been extended to support reduced signals and increases speeds.… … Wikipedia

Pointer swizzling — In computer science, pointer swizzling is the conversion of references based on name or position to direct pointer references. It is typically performed during the deserialization (loading) of a relocatable object from disk, such as an executable … Wikipedia

JSON — infobox file format mime = application/json extension = .json genre = Data interchange standard = RFC 4627JSON (pronEng|ˈdʒeɪsɒn, i.e., Jason ), short for JavaScript Object Notation, is a lightweight computer data interchange format. It is a text … Wikipedia

Reduced Media Independent Interface — (RMII) is a standard that addresses the connection of Ethernet physical layer transceivers (PHY) to Ethernet switches. It reduces the number of signals/pins required for connecting to the PHY from 16 (for an MII compliant interface) to between 6… … Wikipedia

PHP accelerator — A PHP accelerator is an extension designed to boost the performance of software applications written using the PHP programming language. Most PHP accelerators work by caching the compiled bytecode of PHP scripts to avo >Wikipedia

VTD-XML — Infobox Software name = VTD XML caption = developer = XimpleWare latest release version = 2.4 latest release date = April 2, 2008 latest preview version = latest preview date = operating system = Portable platform = blog = [http://vtd… … Wikipedia

Multi-gigabit transceiver — A Multi Gigabit Transceiver (MGT) is a SerDes capable of operating at serial bit rates above 1 Gigabit/second. MGTs are used increasingly for data communications because they can run over longer distances, use fewer wires, and thus have lower… … Wikipedia

The Culture of Collaboration — is a business book by Evan Rosen. The Culture of Collaboration explores how collaborative culture is changing business models and the nature of work. The author goes ins >Wikipedia

Marshalling (computer science) — In computer science, marshalling (sometimes spelled marshaling, similar to serialization) is the process of transforming the memory representation of an object to a data format suitable for storage or transmission. It is typically used when data… … Wikipedia

Зачем нужна сериализация?

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

  • Вопрос задан более двух лет назад
  • 4054 просмотра

Сериализация:

  • это обобщённый процесс для структур языка программирования.
  • нужна для любого взаимодействия в системе, выходящего за рамки передачи данных в текущем скрипте: даже если вам кажется, что она не используется — это не так, она всё равно используется под капотом.

Сериализация гарантирует (для поддерживаемых структур данных), что после процесса сериализации/десериализации вы получите те же самые структуры данных.

Не будь её, вам бы понадобилось вручную создавать свои протоколы и методы перевода данных в вид, пригодный для передачи куда-либо.
Ну и, модуль pickle — это встроенная реализация сериализации, но в то же время — одна из многих. Вы можете использовать, например, json, или yaml. Что угодно, что переведёт обычные структуры данных в пригодную для передачи форму (строку, байтовая строка) и вернёт (десериализует) обратно.

50 Мб) текстовика. Текстовик долго, секунд 20 читался, парсился и превращался в словарь. Чтобы не читать текстовик при каждом пуске программы, я один раз сохранял получившийся словарь при помощи pickle.dump и загружал его pickle.load, это занимало полсекунды.

Но например при передачи через сеть,зачем нужно инкапсулировать строку в байты именно в моем скрипте?

Сериализатору совершенно всё равно, как вы будете использовать результат его работы. Выбор сериализатора — это ваш выбор. Тут показательным может быть пример из моего опыта: я при использовании celery отказался от дефолтного json в пользу pickle, потому что json не поддерживает много чего. Например, множества.

Разве какой либо из уровней модели OSI,не делает это?Или можно просто передать строку в сокет и он сам превратит ее в байтовую строку?И если я самовольно сериализую обьект перед передачей в сокет,он уже будучи в двоичном формате еще раз сереализуется каким либо уровнем модели OSI(говорю каким либо,потому что не знаю на каком этапе это происходит)?То есть проделает ту же работу еще раз?

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL