JSON - это формат, который кодирует объекты в строку. Сериализация означает преобразование объекта в эту строку , а десериализация - это обратная операция (преобразование строки -> объект) .
При передаче данных или хранении их в файле данные должны быть байтовыми строками, но сложные объекты редко бывают в этом формате. Сериализация может преобразовывать эти сложные объекты в байтовые строки для такого использования. После того, как байтовые строки будут переданы, получатель должен будет восстановить исходный объект из байтовой строки. Это известно как десериализация.
Скажем, у вас есть объект:
{foo:[1,4,7,10], bar:"baz"}
сериализация в JSON преобразует его в строку:
'{"foo":[1,4,7,10],"bar":"baz"}'
которые можно хранить или отправлять по телеграфу куда угодно. Затем получатель может десериализовать эту строку, чтобы вернуть исходный объект. {foo: [1, 4, 7, 10], bar: "baz"},
@kennytm - Я пытаюсь осознать, что отправляю сообщения по сети. Независимо от того, использую ли я двоичное кодирование или использую json, xml или proto buf - данные всегда должны быть в байтах, прежде чем их можно будет отправить по сети. Это правда?
Nirmal
1
@ Нирмал Да. ___
kennytm
1
Я использую мнемонический прием, чтобы запомнить разницу: «Сериализация превращает объекты в серийные номера»
Янак Мина
1
Так почему бы нам просто не"{foo: [1, 4, 7, 10], bar: "baz"}"
Panoet
2
Свойства JSON @EnricoMariaDeAngelis должны быть заключены в кавычки. Это необходимость - посмотрите первый пример на вики: en.wikipedia.org/wiki/JSON
Cloud
8
В контексте хранения данных сериализация (или сериализация) - это процесс преобразования структур данных или состояния объекта в формат, который может быть сохранен (например, в файле или буфере памяти) или передан (например, через сетевое соединение). ссылка) и реконструирован позже. [...]
Противоположная операция, извлечение структуры данных из серии байтов, - это десериализация .Из Википедии
В Python «сериализация» не делает ничего, кроме преобразования заданной структуры данных (например, a dict) в ее действительный кулон (объект) JSON.
Python Trueбудет преобразован в JSON, trueа сам словарь будет заключен в кавычки.
Вы можете легко заметить разницу между словарем Python и JSON по их логическим значениям:
Python : True/ False,
JSON : true/false
Встроенный модуль Python json- это стандартный способ сериализации:
Объяснение сериализации и десериализации с использованием Python
В python для сериализации используется модуль pickle . Итак, процесс сериализации в Python называется травлением . Этот модуль доступен в стандартной библиотеке Python .
Сериализация с использованием рассола
import pickle
#the object to serialize
example_dic={1:"6",2:"2",3:"f"}#where the bytes after serializing end up at, wb stands for write byte
pickle_out=open("dict.pickle","wb")#Time to dump
pickle.dump(example_dic,pickle_out)#whatever you open, you must close
pickle_out.close()
Файл PICKLE (может быть открыт текстовым редактором, например блокнотом) содержит это (сериализованные данные):
Однако пользователь спросил о JSON, а не о рассоле. Это несколько оффтоп.
smci
Это оригинальный вопрос: что такое десериализация и сериализация в JSON? Я использовал модуль Python pickle, чтобы продемонстрировать идею. Я использовал инструмент, чтобы объяснить идею. Вы концентрируетесь на инструменте больше, чем на идее.
Ответы:
JSON - это формат, который кодирует объекты в строку. Сериализация означает преобразование объекта в эту строку , а десериализация - это обратная операция (преобразование строки -> объект) .
При передаче данных или хранении их в файле данные должны быть байтовыми строками, но сложные объекты редко бывают в этом формате. Сериализация может преобразовывать эти сложные объекты в байтовые строки для такого использования. После того, как байтовые строки будут переданы, получатель должен будет восстановить исходный объект из байтовой строки. Это известно как десериализация.
Скажем, у вас есть объект:
сериализация в JSON преобразует его в строку:
которые можно хранить или отправлять по телеграфу куда угодно. Затем получатель может десериализовать эту строку, чтобы вернуть исходный объект.
{foo: [1, 4, 7, 10], bar: "baz"}
,источник
"{foo: [1, 4, 7, 10], bar: "baz"}"
В Python «сериализация» не делает ничего, кроме преобразования заданной структуры данных (например, a
dict
) в ее действительный кулон (объект) JSON.True
будет преобразован в JSON,true
а сам словарь будет заключен в кавычки.True
/False
,true
/false
json
- это стандартный способ сериализации:Пример кода:
Источник: realpython.com
источник
Объяснение сериализации и десериализации с использованием Python
В python для сериализации используется модуль pickle . Итак, процесс сериализации в Python называется травлением . Этот модуль доступен в стандартной библиотеке Python .
Сериализация с использованием рассола
Файл PICKLE (может быть открыт текстовым редактором, например блокнотом) содержит это (сериализованные данные):
€} q (KX 6qKX 2qKX fqu.
Десериализация с использованием рассола
Вывод:
{1: '6', 2: '2', 3: 'f'}
источник