Відповіді:
JSON - це формат, який кодує об'єкти в рядку. Серіалізація означає перетворити об’єкт у цей рядок , а десеріалізація - це його зворотна операція (перетворити рядок -> об'єкт) .
При передачі даних або зберіганні їх у файлі дані повинні бути рядками байтів, але складні об'єкти рідко бувають у цьому форматі. Серіалізація може перетворити ці складні об'єкти в рядки байтів для такого використання. Після передачі рядків байтів одержувач повинен буде відновити оригінальний об'єкт з рядка байтів. Це відомо як десеріалізація.
Скажіть, у вас є об’єкт:
{foo: [1, 4, 7, 10], bar: "baz"}
серіалізація в JSON перетворить його в рядок:
'{"foo":[1,4,7,10],"bar":"baz"}'
які можна зберігати або надсилати по дроту в будь-яке місце. Потім приймач може дезаріалізувати цю рядок, щоб повернути початковий об'єкт. {foo: [1, 4, 7, 10], bar: "baz"}
.
"{foo: [1, 4, 7, 10], bar: "baz"}"
У контексті зберігання даних серіалізація (або серіалізація) - це процес перекладу структур даних або стану об'єкта у формат, який може зберігатися (наприклад, у файлі або буфері пам'яті) або передаватися (наприклад, через мережеве з'єднання посилання) та реконструйовано пізніше. [...]
Протилежна операція, витягуючи структуру даних із ряду байтів, - це десеріалізація . З Вікіпедії
У Python "серіалізація" не робить нічого іншого, як просто перетворити дану структуру даних (наприклад, а dict
) у її дійсну кулон JSON (об'єкт).
True
будуть перетворені в JSON, true
а сам словник буде інкапсульований у лапки.True
/ False
,true
/false
json
- це стандартний спосіб серіалізації:Приклад коду:
data = {
"president": {
"name": "Zaphod Beeblebrox",
"species": "Betelgeusian",
"male": True,
}
}
import json
json_data = json.dumps(data, indent=2) # serialize
restored_data = json.loads(json_data) # deserialize
# serialized json_data now looks like:
# {
# "president": {
# "name": "Zaphod Beeblebrox",
# "species": "Betelgeusian",
# "male": true
# }
# }
Джерело: realpython.com
Пояснення серіалізації та десеріалізації за допомогою Python
У python для серіалізації використовується модуль соління . Отже, процес серіалізації у 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 (може бути відкритий текстовим редактором, як блокнот) містить це (серіалізовані дані):
€} q (KX 6qKX 2qKX fqu.
Десеріалізація за допомогою соління
import pickle
pickle_in=open("dict.pickle","rb")
get_deserialized_data_back=pickle.load(pickle_in)
print(get_deserialized_data_back)
Вихід:
{1: '6', 2: '2', 3: 'f'}