structure updates
This commit is contained in:
100
tech_docs/python/json_python.md
Normal file
100
tech_docs/python/json_python.md
Normal file
@@ -0,0 +1,100 @@
|
||||
For Python developers dealing with JSON data, whether for configuration files, data interchange between web services, or server responses, the built-in `json` library is an essential tool. It offers straightforward methods for encoding (serializing) Python objects into JSON strings and decoding (deserializing) JSON strings back into Python objects.
|
||||
|
||||
### JSON Library Usage Guide
|
||||
|
||||
#### Basic Operations
|
||||
|
||||
##### Encoding (Serialization)
|
||||
|
||||
Serializing Python objects into JSON strings is achieved with `json.dumps()` for creating a JSON-formatted string and `json.dump()` for writing JSON data directly to a file.
|
||||
|
||||
###### Convert Python Object to JSON String
|
||||
```python
|
||||
import json
|
||||
|
||||
data = {
|
||||
"name": "John Doe",
|
||||
"age": 30,
|
||||
"isEmployed": True,
|
||||
"skills": ["Python", "Machine Learning", "Web Development"]
|
||||
}
|
||||
|
||||
json_string = json.dumps(data, indent=4)
|
||||
print(json_string)
|
||||
```
|
||||
|
||||
###### Write JSON Data to a File
|
||||
```python
|
||||
with open('data.json', 'w') as file:
|
||||
json.dump(data, file, indent=4)
|
||||
```
|
||||
|
||||
##### Decoding (Deserialization)
|
||||
|
||||
Deserializing JSON strings back into Python objects is done using `json.loads()` for parsing a JSON string and `json.load()` for reading JSON data from a file.
|
||||
|
||||
###### Convert JSON String to Python Object
|
||||
```python
|
||||
json_string = '{"name": "Jane Doe", "age": 25, "isEmployed": false}'
|
||||
python_object = json.loads(json_string)
|
||||
print(python_object)
|
||||
```
|
||||
|
||||
###### Read JSON Data from a File
|
||||
```python
|
||||
with open('data.json', 'r') as file:
|
||||
python_object = json.load(file)
|
||||
print(python_object)
|
||||
```
|
||||
|
||||
### Advanced Usage
|
||||
|
||||
#### Custom Object Encoding and Decoding
|
||||
|
||||
The `json` library can be extended to encode custom objects and decode JSON into specific Python classes.
|
||||
|
||||
##### Encoding Custom Objects
|
||||
```python
|
||||
class User:
|
||||
def __init__(self, name, age):
|
||||
self.name = name
|
||||
self.age = age
|
||||
|
||||
def encode_user(obj):
|
||||
if isinstance(obj, User):
|
||||
return {"name": obj.name, "age": obj.age, "__User__": True}
|
||||
return obj
|
||||
|
||||
user = User("John Doe", 30)
|
||||
json_string = json.dumps(user, default=encode_user)
|
||||
print(json_string)
|
||||
```
|
||||
|
||||
##### Decoding JSON into Custom Python Objects
|
||||
```python
|
||||
def decode_user(dct):
|
||||
if "__User__" in dct:
|
||||
return User(dct["name"], dct["age"])
|
||||
return dct
|
||||
|
||||
user = json.loads(json_string, object_hook=decode_user)
|
||||
print(user.name, user.age)
|
||||
```
|
||||
|
||||
### Use Cases
|
||||
|
||||
- **Configuration Files**: Use JSON files to store application configurations, making it easy to read and update settings.
|
||||
|
||||
- **Data Interchange**: JSON is a common format for data exchange between servers and web applications, particularly in RESTful APIs.
|
||||
|
||||
- **Storing and Retrieving Data**: JSON files can serve as a simple way to store data persistently and retrieve it for analysis or reporting.
|
||||
|
||||
### Best Practices
|
||||
|
||||
- **Handling Exceptions**: Always handle exceptions when parsing JSON to deal with malformed data gracefully.
|
||||
|
||||
- **Security Considerations**: Be cautious when deserializing JSON from untrusted sources to avoid security vulnerabilities.
|
||||
|
||||
- **Pretty Printing**: Use the `indent` parameter in `json.dumps()` or `json.dump()` for pretty printing, making JSON data easier to read and debug.
|
||||
|
||||
The built-in `json` library in Python simplifies the process of working with JSON data, providing powerful tools for serializing and deserializing data efficiently and securely. Whether you're building web applications, working with APIs, or simply need a lightweight format for storing data, the `json` library offers the necessary functionality to work with JSON data effectively.
|
||||
Reference in New Issue
Block a user