删除对象数组中的JSON属性

Eva*_*olo 18 python json

我有一个JSON数组,我正在用Python清理.我想删除该imageData属性:

data.json

[{"title": "foo", "imageData": "xyz123"},
{"title": "bar", "imageData": "abc123"},
{"title": "baz", "imageData": "def456"}]
Run Code Online (Sandbox Code Playgroud)

我正在设置列表解析以删除属性,但我不确定如何创建关注的变量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
Run Code Online (Sandbox Code Playgroud)

当我print列表理解时,它返回一个空数组.我需要纠正什么才能使其正常工作?

Ste*_*ppo 32

解决问题的一个简单方法是使用以下方法删除不需要的密钥del:

import json

with open('data.json') as json_data:
    data = json.load(json_data)
    for element in data: 
        del element['imageData'] 
Run Code Online (Sandbox Code Playgroud)

你应该添加一些安全检查,但你明白了.


Dan*_*man 17

如果并非所有元素都有imageData密钥,则使用del将导致KeyError异常.您可以使用pop默认值来防范:

for item in data: 
    item.pop('image', None)
Run Code Online (Sandbox Code Playgroud)