使用 Python 3 检查 JSON 键是否为空的条件语句

Conditional statement to check if a JSON key is null with Python 3

已更新此问题以澄清问题,以便将来更好地帮助其他人。


我正在尝试使用 if 语句来测试键 classes 是否存在于使用 Python 的 JSON 结构中。使用 Python 检查 JSON 结构中是否存在键。我能够获得密钥,但需要帮助找出条件应该是什么以检查它是否存在。

当键 class 存在于 JSON 结构中时,我使用以下代码成功地 return 其值:

#Parameter: json_data - The JSON structure it is checking
def parse_classes(json_data):
    lst = list()
    if('classes' is in json_data['images'][0]['classifiers'][0]): #This doesn't work
        for item in json_data['images'][0]['classifiers'][0]['classes']: 
            lst.append(item['class'])
    else:
        lst = None

    return(lst)

例子json_data:

{"images": ["classifiers": ["classes": ["class": "street"]]]}

我的问题似乎在第 4 行,问题似乎是条件语句不正确。我需要对 if 语句进行哪些更改才能使其正常工作?

我想你的意思是 if 而不是 for:

def parse_classes(json_data):
    lst = set()
    if 'classes' in json_data['images'][0]['classifiers'][0]:
        for item in json_data['images'][0]['classifiers'][0]['classes']:
            lst.add(item['class'])
    else:
        print("")
    return lst

或防守

def parse_classes(json_data):
    lst = set()
    if (json_data.get('images')
            and json_data['images'][0].get('classifiers')
            and json_data['images'][0]['classifiers'][0].get('classes')):
        for item in json_data['images'][0]['classifiers'][0].get('classes', []):
            lst.add(item['class'])
    return lst if lst else None

如果你想要全部 class 全部 classifiers 全部 images

def parse_classes(json_data):
    lst = set()
    for image in json_data.get('images', []):
        for classifier in image.get('classifiers', []):
            for item in classifier.get('classes', []):
                lst.add(item['class'])
    return lst if lst else None