Удалить объект из json
Есть json файл с данными такого типа:
[
{
"text": [
{
"item": "E:\\mainqueen\\Scripts\\python.exe E:/type49/python/TP/mainqueen/main.py\n",
"time": "2020-05-27 | 19.19.52"
}
]
},
{
"html": [
{
"item": "https://www.youtube.com/watch?v=9N6a-VLBa2I",
"time": "2020-05-27 | 19.19"
}
]
},
{
"image": [
{
"item": "E:\\type49\\python\\TP\\mainqueen\\\\Downloads\\\\images\\\\2020-05-27-19-20-09.png",
"time": "2020-05-27 | 19.20"
}
]
},
{
"text": [
{
"item": "E:\\mainqueen\\Scripts\\python.exe E:/type49/python/TP/mainqueen/main.py\n",
"time": "2020-05-27 | 22.39.11"
}
]
},
{
"gif": [
{
"item": "E:\\type49\\python\\TP\\mainqueen\\\\Downloads\\\\images\\\\2020-05-27-23-25-18.gif",
"time": "2020-05-27 | 23.25"
}
]
}
]
И каждый объект я записываю в переменную. Как мне удалить из json объект по этой переменной? Именно весь объект, 'html', например, со всем его содержимым.
Сделал по совету из комментария:
def write_data_to_json(data_line):
with open(r'data\data\saved_data.json', 'w') as data_file:
json.dump(data_line, data_file, indent=2, ensure_ascii=False)
new_data = []
for i in self.data_text:
if i != x_data_line:
new_data.append(i)
write_data_to_json(new_data)
self.data_text - содержимое json, x_data_line - удаляемый объект.
Ответы (2 шт):
Автор решения: type49
→ Ссылка
Сделал по совету @MaxU из комментария:
def write_data_to_json(data_line):
with open(r'data\data\saved_data.json', 'w') as data_file:
json.dump(data_line, data_file, indent=2, ensure_ascii=False)
new_data = []
for i in self.data_text:
if i != x_data_line:
new_data.append(i)
write_data_to_json(new_data)
self.data_text - содержимое json, x_data_line - удаляемый объект.
Автор решения: gil9red
→ Ссылка
Фильтр по заданному ключу:
import json
with open('json_data.json', encoding='utf-8') as f:
data = json.load(f)
# [{'text': [{'item': 'E:\\mainqueen\\Scripts\\python.exe E:/type49/python/TP/mainqueen/ma ...
x_data_line = 'html'
new_data = [x for x in data if x_data_line not in x]
write_data_to_json(new_data)
PS.
Строка
new_data = [x for x in data if x_data_line not in x]
тоже самое что:
new_data = []
for x in data:
if x_data_line not in x:
new_data.append(x)