如果JSON字符串中不存在属性,如何返回空字符串?

时间:2016-10-11 19:58:21

标签: python json

我有一个JSON字符串,我试图使用Python提取属性值,如下所示:

def extract_property(node, to_extract):
    data, stat = zk.get(node)
    jsonString = data.decode("utf-8")
    jStr = json.loads(jsonString)
    return jStr[to_extract]

现在有可能,我试图提取的属性值不存在于该JSON字符串中,因此它将失败。如果JSON字符串中根本不存在属性,我该如何返回空字符串。

如果属性不存在,此行可能会失败。

return jStr[to_extract]

2 个答案:

答案 0 :(得分:1)

只需使用dict.get(),即:

return jStr.get(to_extract, '')

有关详细信息,请参阅https://docs.python.org/3/library/stdtypes.html#dict.get

UPD:

感谢@jez指出,jStr不能保证是字典。但是,JSON解析的结果是已知的:如果它不是字典,则它是列表,数字或字符串。在这种情况下,将其包装到类型检查例程中,例如:

try:
    return jStr[to_extract]
except (KeyError, AttributeError):
    return ''

答案 1 :(得分:1)

与Zaur一样,我也建议jStr.get(to_extract, ''),但我认为OP对此的反对意见是jStr可能或者可能不是 a {{ 1}}(如果它是dict,那么dict将在Python 2或3中工作。如果这是问题,那么以下内容可能涵盖更广泛的案例:

.get()