Middle
What to do if you need to serialize data that is not supported by the standard json module?
sobes.tech AI
Answer from AI
You can use the following approaches:
-
Extend the standard
JSONEncoderserializer. This allows you to define how to serialize custom data types.import json class CustomEncoder(json.JSONEncoder): def default(self, o): if isinstance(o, set): return list(o) # Serialize sets as lists if hasattr(o, '__dict__'): return o.__dict__ # Serialize objects with attributes as dictionaries return super().default(o) -
Use external libraries. There are libraries that provide more flexible and powerful serialization tools.
Library Description Example usage pickleSerializes and deserializes Python objects. Unsafe for external data. import pickle; data = {'a': 1}; pickled_data = pickle.dumps(data)jsonpickleExtends the standard json, supporting more complex types.import jsonpickle; data = {1, 2}; json_string = jsonpickle.encode(data)msgpackEfficient binary serialization format. import msgpack; data = {'a': 1}; packed_data = msgpack.packb(data) -
Manually convert data to a supported format. Before serialization, convert data to basic JSON types (strings, numbers, booleans, lists, dictionaries,
None).from datetime import datetime data = {'timestamp': datetime.now()} # Convert datetime to ISO 8601 string before serialization data['timestamp'] = data['timestamp'].isoformat()