我有一个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]
答案 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()