Python 如果属性不存在,如何返回空字符串';JSON字符串中是否不存在?

Python 如果属性不存在,如何返回空字符串';JSON字符串中是否不存在?,python,json,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字

我有一个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]
只需使用dict.get(),即:

return jStr.get(to_extract, '')
有关更多详细信息,请参阅

UPD:

感谢@jez指出,
jStr
不一定是一本字典。然而,JSON解析的结果是已知的:如果它不是字典,那么它就是列表、数字或字符串。在这种情况下,将其包装到类型检查例程中,例如:

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

像Zaur一样,我也会建议
jStr.get(to_extract')
,但我认为OP对此的反对意见是
jStr
可能是也可能不是
dict
(如果是
dict
,那么
.get()
将在Python 2或3中工作)。如果这就是问题所在,那么以下内容可能涵盖更广泛的情况:

try: return jStr[to_extract]
except: return ''

if to_extract in jStr:
if jStr[to_extract]:return jStr[to_extract]else:return None@MooingRawr,如果属性不存在,就会出现同样的错误。@barmar我明白了,每天都学习新东西,出于某种原因,我认为JSON对象是特殊的,如果找不到属性,它们将不会返回任何内容。现在想想,这似乎相当愚蠢。@mooningrawr没有JSON对象这样的东西。JSON是数据结构的字符串表示形式。解码后,它只是一种本机数据类型。在本例中,它是一个Python字典。这将做什么?你能解释一下我的理解吗?链接文档看起来很直截了当,这是Python3的特性吗?这对我一点用都没有。我使用的是2.7.3,无法升级。不,从一开始就存在。