扫码一下
查看教程更方便
要从列表中删除 JSON 对象:
import json
file_name = 'example.json'
with open(file_name, 'r', encoding='utf-8') as f:
my_list = json.load(f)
# [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Carl'}]
print(my_list)
for idx, obj in enumerate(my_list):
if obj['id'] == 2:
my_list.pop(idx)
new_file_name = 'new-file.json'
with open(new_file_name, 'w', encoding='utf-8') as f:
f.write(json.dumps(my_list, indent=2))
该示例显示如何从文件中的对象数组中删除 JSON 对象。
我们可以使用相同的方法从文件外的对象数组中删除 JSON 对象。
import json
my_json = '[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]'
my_list = json.loads(my_json)
for idx, dictionary in enumerate(my_list):
if dictionary['id'] == 2:
my_list.pop(idx)
# [{'id': 1, 'name': 'Alice'}]
print(my_list)
json_again = json.dumps(my_list)
print(json_again) # '[{"id": 1, "name": "Alice"}]'
如果我们的 JSON 位于文件中,请使用 json.load()
方法解析 json。
json.load
方法用于将文件反序列化为 Python 对象,而 json.loads
方法用于将 JSON 字符串反序列化为 Python 对象。
下一步是遍历列表并检查每个字典中的键是否具有特定值。
import json
file_name = 'example.json'
with open(file_name, 'r', encoding='utf-8') as f:
my_list = json.load(f)
# [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}, {'id': 3, 'name': 'Carl'}]
print(my_list)
for idx, obj in enumerate(my_list):
if obj['id'] == 2:
my_list.pop(idx)
new_file_name = 'new-file.json'
with open(new_file_name, 'w', encoding='utf-8') as f:
f.write(json.dumps(my_list, indent=2))
一旦找到匹配的字典,我们必须使用 list.pop()
方法将其从列表中删除。
list.pop 方法删除列表中给定位置的项目并将其返回。
如果我们只想从列表中删除 1 个字典,也可以添加一个 break 语句。
for idx, obj in enumerate(my_list):
if obj['id'] == 2:
my_list.pop(idx)
break
如果字典位于列表的开头,这可以为我们节省一些不必要的迭代时间。
最后一步是在示例中打开一个新文件(new-file.json),将列表序列化为 json 并写入文件。
new_file_name = 'new-file.json'
with open(new_file_name, 'w', encoding='utf-8') as f:
f.write(json.dumps(my_list, indent=2))