From 956e8341115ffa36b2283dcc9455d09febfc153d Mon Sep 17 00:00:00 2001 From: medusa Date: Wed, 26 Jun 2024 06:13:46 +0000 Subject: [PATCH] Update tech_docs/python/json_python.md --- tech_docs/python/json_python.md | 97 +++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/tech_docs/python/json_python.md b/tech_docs/python/json_python.md index a7d704e..92e83ab 100644 --- a/tech_docs/python/json_python.md +++ b/tech_docs/python/json_python.md @@ -1,3 +1,100 @@ +Sure! Let's focus on the Python implementation of serialization and deserialization, illustrating the process with detailed examples. + +### Serialization + +Serialization in Python can be done using various libraries, such as `json`, `pickle`, or others. Here, we'll use the `json` library for simplicity. + +1. **Convert Data Class to JSON Object:** + +First, let's define a simple data class and serialize it to a JSON string. + +**Example in Python:** +```python +import json + +class Person: + def __init__(self, name, age): + self.name = name + self.age = age + +# Create an instance of the class +person = Person("Alice", 30) + +# Serialize the object to JSON +person_json = json.dumps(person.__dict__) + +print(person_json) # Output: {"name": "Alice", "age": 30} +``` + +### Deserialization + +Deserialization is the reverse process, converting the JSON string back into an object. + +1. **Convert JSON Object Back to Data Class:** + +**Example in Python:** +```python +# Deserialize the JSON back to a dictionary +person_dict = json.loads(person_json) + +# Create a new instance of Person with the deserialized data +deserialized_person = Person(**person_dict) + +print(deserialized_person.name) # Output: Alice +print(deserialized_person.age) # Output: 30 +``` + +### Complete Example + +Combining serialization and deserialization into a complete example: + +```python +import json + +class Person: + def __init__(self, name, age): + self.name = name + self.age = age + +# Serialization +def serialize(person): + """Serialize a Person object to a JSON string.""" + return json.dumps(person.__dict__) + +# Deserialization +def deserialize(person_json): + """Deserialize a JSON string to a Person object.""" + person_dict = json.loads(person_json) + return Person(**person_dict) + +# Example usage +if __name__ == "__main__": + # Create an instance of the class + person = Person("Alice", 30) + + # Serialize the object to JSON + person_json = serialize(person) + print(f"Serialized JSON: {person_json}") + + # Deserialize the JSON back to a Person object + deserialized_person = deserialize(person_json) + print(f"Deserialized Person: Name={deserialized_person.name}, Age={deserialized_person.age}") +``` + +### Explanation + +1. **Serialization:** + - The `serialize` function takes a `Person` object and converts it into a JSON string using `json.dumps()`. + - The `__dict__` attribute of the object is used to get a dictionary representation of the object's attributes. + +2. **Deserialization:** + - The `deserialize` function takes a JSON string and converts it back into a `Person` object using `json.loads()`. + - The resulting dictionary is unpacked into the `Person` constructor using the `**` syntax. + +This approach provides a clear and concise method for serializing and deserializing objects in Python, ensuring that the object's state can be easily saved and restored. + +--- + # Comprehensive Guide: JSON 'Querying' in Python When working with JSON in Python, you're essentially navigating and manipulating a nested structure of dictionaries and lists. While not a formal query language like SQL, Python provides powerful tools to extract, filter, and transform JSON data. Here's an in-depth look at common operations: