Серіалізація в програмуванні — це процес перетворення об'єкта або структури даних у формат, який може бути збережений у файлі, переданий мережею або збережений у базі даних. Зворотний процес називається десеріалізацією, коли серіалізовані дані відновлюються до їхньої первісної структури.
pickle
pickle
— це модуль Python, який дозволяє серіалізувати та десеріалізувати об'єкти Python, включаючи складні структури даних, такі як списки, словники та навіть класи.
pickle
pickle.dumps(obj)
— серіалізує об'єкт obj
у байтовий рядок.pickle.loads(byte_string)
— десеріалізує об'єкт із байтового рядка.pickle.dump(obj, file)
— серіалізує об'єкт і записує його у відкритий файл.pickle.load(file)
— десеріалізує об'єкт із відкритого файлу.pickle
import pickle
some_data = {
(1, 3.5): 'tuple',
2: [1, 2, 3],
'a': {'key': 'value'}
}
# Серіалізація в байтовий рядок
byte_string = pickle.dumps(some_data)
unpacked = pickle.loads(byte_string)
print(unpacked == some_data) # True
print(unpacked is some_data) # False
# Серіалізація у файл
file_name = 'data.bin'
with open(file_name, "wb") as fh:
pickle.dump(some_data, fh)
with open(file_name, "rb") as fh:
unpacked = pickle.load(fh)
print(unpacked == some_data) # True
print(unpacked is some_data) # False
Застереження: Об'єкти класів можуть бути серіалізовані лише тоді, коли клас визначений на момент десеріалізації. Тому передача класів між різними машинами або середовищами може бути проблематичною.
JSON (JavaScript Object Notation) — це легкий формат обміну даними, широко використовується для зберігання та передачі даних у веб-застосунках.
json.dumps(obj)
— серіалізує об'єкт у рядок JSON.json.loads(json_string)
— десеріалізує об'єкт із рядка JSON.json.dump(obj, file)
— серіалізує об'єкт у JSON і записує його у файл.json.load(file)
— десеріалізує об'єкт із JSON-файлу.