推荐答案
// www.javascriptcn.com code example
import json
# 将 Python 对象转换为 JSON 字符串
data = {
"name": "Alice",
"age": 30,
"city": "New York"
}
json_string = json.dumps(data)
print(json_string)
# 将 JSON 字符串转换为 Python 对象
json_data = '{"name": "Alice", "age": 30, "city": "New York"}'
python_obj = json.loads(json_data)
print(python_obj)
# 将 Python 对象写入 JSON 文件
with open('data.json', 'w') as json_file:
json.dump(data, json_file)
# 从 JSON 文件读取数据并转换为 Python 对象
with open('data.json', 'r') as json_file:
data_from_file = json.load(json_file)
print(data_from_file)本题详细解读
1. json.dumps() 和 json.loads()
json.dumps() 用于将 Python 对象(如字典、列表等)转换为 JSON 格式的字符串。
json.loads() 用于将 JSON 格式的字符串转换为 Python 对象。
2. json.dump() 和 json.load()
json.dump() 用于将 Python 对象写入到文件中,文件内容为 JSON 格式。
json.load() 用于从文件中读取 JSON 数据并转换为 Python 对象。
3. 处理复杂数据类型
- JSON 支持的数据类型包括字符串、数字、布尔值、数组(列表)和对象(字典)。
- Python 中的
None 会被转换为 JSON 中的 null。
4. 处理日期和时间
- JSON 没有原生的日期和时间类型,通常将日期时间转换为字符串格式(如 ISO 8601)后再进行序列化。
5. 处理自定义对象
- 如果需要序列化自定义对象,可以通过定义
default 参数或实现 __json__ 方法来自定义序列化逻辑。
// www.javascriptcn.com code example
import json
from datetime import datetime
class Person:
def __init__(self, name, birthdate):
self.name = name
self.birthdate = birthdate
def to_json(self):
return {
"name": self.name,
"birthdate": self.birthdate.isoformat()
}
person = Person("Alice", datetime(1990, 1, 1))
json_string = json.dumps(person, default=lambda o: o.to_json())
print(json_string)6. 处理 JSON 文件
- 使用
with open() 语句可以确保文件在操作完成后自动关闭,避免资源泄露。
- 读取和写入 JSON 文件时,确保文件路径正确,并且文件权限允许读写操作。