Python proporciona tres módulos diferentes que nos permiten serializar y deserializar objetos:
- Módulo Mariscal
- Módulo de salmuera
- Módulo JSON
1. Módulo Marshal: Es el módulo más antiguo de estos tres. Se utiliza principalmente para leer y escribir el código de bytes compilado de los módulos de Python. Incluso podemos usar marshal para serializar objetos de Python, pero no se recomienda su uso. Es utilizado principalmente por el intérprete y la documentación oficial advierte que los mantenedores de python pueden modificar el formato de manera incompatible con versiones anteriores.
Nota: Se recomienda nunca descomponer los datos recibidos de una fuente no confiable o no autenticada.
Ejemplo :
Python3
# importing the module import marshal data = {'name': 'sunny','age': 34,'address': 'nasik'} # dumps() return byte object stored in variable 'bytes' bytes = marshal.dumps(data) print('After serialization : ', bytes) # loads() convert byte object to value new_data = marshal.loads(bytes) print('After deserialization : ', new_data)
Producción:
Después de la serialización: b’\xfb\xda\x04name\xda\x05sunny\xda\x03age\xe9″\x00\x00\x00\xda\x07address\xda\x05nasik0′
Después de la deserialización: {‘name’: ‘sunny’, ‘age’: 34, ‘address’: ‘nasik’}
2. Módulo Pickle: es otra forma de serializar y deserializar objetos de Python. Serializa el objeto de Python en un formato binario, por lo que no es legible por humanos. Es más rápido y también funciona con objetos personalizados. El módulo pickle de Python es una mejor opción para la serialización y deserialización de objetos de Python. Si no necesita un formato legible por humanos o si necesita serializar objetos personalizados, se recomienda utilizar el módulo pickle.
Ejemplo:
Python3
# importinig the module import pickle data = {'st_name': 'Sunny', 'st_id': '9607', 'st_add': 'Nasik'} with open('data.pickle', 'wb') as f1 : # converts object to byte stream(list, dict, etc.) pickle.dump(data, f1) print('Pickling Completed...') with open('data.pickle', 'rb') as f2 : print('Unpickling the data : ') # converts byte stream(generated through pickling)back into object data = pickle.load(f2) print(data)
Producción:
Pickling Completed... Unpickling the data : {'st_name': 'Sunny', 'st_id': '9607', 'st_add': 'Nasik'}
3. Módulo JSON: Es un módulo de nueva creación. Nos permite trabajar con archivos JSON estándar. JSON es un formato ampliamente utilizado para el intercambio de datos y es muy conveniente. Es legible por humanos e independiente del lenguaje, y es más ligero que XML. Usando el módulo JSON podemos serializar y deserializar varios tipos estándar de Python como bool, dict, int, float, list, string, tuple, none, etc. El módulo JSON y XML son una buena opción si queremos interoperabilidad entre diferentes lenguajes.
Ejemplo: deserializar
Python3
# importing the module import json # JSON string students = '{"id":"9607", "name": "Sunny", "department":"Computer"}' # convert string to Python dict student_dict = json.loads(students) print(student_dict) print(student_dict['name']) print('Deserialization Completed.')
Producción:
{"id": "9607", "name": "Sunny", "department":"Computer"} Sunny Deserialization Completed.
Ejemplo: serialización
Python3
# importing the module import json data = { "id": "877", "name": "Mayur", "department": "Comp" } # Serializing json json_object = json.dumps(data) print(json_object) print('Serialization Completed.')
{"id": "877", "name": "Mayur", "department": "Comp"} Serialization Completed.
Producción:
{"id": "877", "name": "Mayur", "department": "Comp"} Serialization Completed.
Publicación traducida automáticamente
Artículo escrito por ronilpatil y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA