在Python中处理JSON文件可以通过内置的json
模块来实现。以下是一些常见的操作,包括读取、保存、修改、删除、查找和替换JSON中的值或键。我们将以一个示例JSON文件为基础进行演示。
示例JSON文件
假设我们有一个名为data.json
的JSON文件,内容如下:
{
"name": "Alice",
"age": 30,
"city": "New York",
"email": "alice@example.com",
"interests": ["reading", "traveling", "music"]
}
1. 读取JSON文件
import json
def read_json(file_path):
with open(file_path, 'r') as file:
data = json.load(file)
return data
data = read_json('data.json')
print(data)
2. 保存JSON文件
def save_json(file_path, data):
with open(file_path, 'w') as file:
json.dump(data, file, indent=4)
# 修改后保存
data['age'] = 31
save_json('data.json', data)
3. 修改某个或某些值
def modify_value(data, key, new_value):
if key in data:
data[key] = new_value
else:
print(f"Key '{key}' not found.")
modify_value(data, 'city', 'Los Angeles')
print(data) # 查看修改后的数据
4. 删除某些值或键
def delete_key(data, key):
if key in data:
del data[key]
else:
print(f"Key '{key}' not found.")
delete_key(data, 'email')
print(data) # 查看删除后的数据
5. 查找某个值
def find_value(data, key):
return data.get(key, "Key not found.")
city = find_value(data, 'city')
print(f"City: {city}")
6. 替换某个值
def replace_value(data, key, old_value, new_value):
if key in data and data[key] == old_value:
data[key] = new_value
else:
print(f"Value '{old_value}' not found for key '{key}'.")
replace_value(data, 'interests', 'reading', 'writing')
print(data) # 查看替换后的数据
综合示例
以下是一个完整的示例,综合了上述所有操作:
import json
def read_json(file_path):
"""读取 JSON 文件并返回数据"""
with open(file_path, 'r') as file:
return json.load(file)
def save_json(file_path, data):
"""保存 JSON 数据到文件"""
# 使用 indent 参数确保缩进保持一致
with open(file_path, 'w') as file:
json.dump(data, file, indent=4)
def pretty_print(data):
"""美观打印 JSON 数据"""
print(json.dumps(data, indent=4))
def modify_value(data, key, new_value):
"""修改某个键的值"""
if key in data:
data[key] = new_value
else:
print(f"键 '{key}' 未找到。")
def delete_key(data, key):
"""删除某个键"""
if key in data:
del data[key]
else:
print(f"键 '{key}' 未找到。")
def find_value(data, key):
"""查找某个键的值"""
return data.get(key, "未找到该键。")
def replace_value(data, key, old_value, new_value):
"""替换关键字的某个值"""
if key in data and data[key] == old_value:
data[key] = new_value
elif key not in data:
print(f"键 '{key}' 未找到。")
else:
print(f"键 '{key}' 的值不是 '{old_value}'。")
# 主程序部分
file_path = 'data.json'
# 读取 JSON 数据
data = read_json(file_path)
# 更改年龄
print("修改前数据:")
pretty_print(data)
modify_value(data, 'age', 31)
print("\n修改后数据:")
pretty_print(data)
# 删除 email
delete_key(data, 'email')
print("\n删除 email 后数据:")
pretty_print(data)
# 查找城市
city = find_value(data, 'city')
print(f"\n城市: {city}")
# 替换兴趣
replace_value(data, 'interests', 'reading', 'writing')
print("\n替换兴趣后数据:")
pretty_print(data)
# 保存修改后的数据
save_json(file_path, data)
print("\n已保存修改后的数据,文件内容如下:")
pretty_print(data)
总结
上述代码展示了如何在Python中使用json
模块处理JSON文件的基本操作。根据需要,你可以在这些函数的基础上进行扩展或修改,以便满足具体需求。