Удаление свойства JSON в массиве объектов с помощью Python
У меня есть массив JSON, который я очищаю на Python. Я хочу удалить свойство imageData
:
data.json
[{"title": "foo", "imageData": "xyz123"},
{"title": "bar", "imageData": "abc123"},
{"title": "baz", "imageData": "def456"}]
Я создаю понимание списка, чтобы удалить свойство, но я не уверен, как создать переменную, которая фокусируется на imageData
:
import json
with open('data.json') as json_data:
data = json.load(json_data)
clean_data = [ item for item in data if not item['imageData'] ]
# Write `clean_data` to new json file
Когда я print
распознает список, он возвращает пустой массив. Что я должен исправить, чтобы нормально работать?
Ответы
Ответ 1
Легкое решение вашей проблемы - удаление ненужного ключа на месте с помощью del
:
import json
with open('data.json') as json_data:
data = json.load(json_data)
for element in data:
del element['imageData']
Вы должны добавить некоторые проверки безопасности, но вы получите эту идею.
Ответ 2
Если не все элементы имеют ключ imageData
, то использование del
приведет к исключению KeyError
. Вы можете предотвратить это, используя pop
со значением по умолчанию:
for item in data:
item.pop('image', None)
Ответ 3
[ item for item in data if not item['imageData'] ]
пусто, так как все имеют imageData
. Вы просто проверяете его, а не удаляете.
Завершите цикл date
и del item['imageData']
на каждом item
.
Ответ 4
Как насчет:
clean_data = [k:v for k,v in data.iteritems() if k != 'imageData']
Или словарь expresion/понимание, если вы хотите словарь:
clean_data = {k:v for k,v in data.iteritems() if k != 'imageData'}