Python 当元素不存在时处理JSON解析TypeError的正确方法
密码让我最终得到我想要的。(这是为了从一个非常大的json数据集中创建一个我想要的字段字典列表,这样我就可以为额外的数据处理创建一个dataframe) 但是,我必须构造一个非常大的try/expect块来完成这项工作。我想知道是否有更清晰/聪明的方法来实现这一点 我遇到的问题是,细节['element']有时不存在或没有值,如果子元素['value']上不存在,则会引发非类型异常,因为它不存在,因此无法捕获 因此,如果发生这种情况,我有一个很大的try/except块将变量设置为' 我试图将详细信息['element']发送到一个函数,该函数将向变量输出一个返回值……但我似乎无法做到这一点,因为Python在将元素传递到函数之前会检查该元素是否为NoneType,而这是在将其发送到函数之前发生的 有什么想法吗Python 当元素不存在时处理JSON解析TypeError的正确方法,python,json,parsing,dataframe,Python,Json,Parsing,Dataframe,密码让我最终得到我想要的。(这是为了从一个非常大的json数据集中创建一个我想要的字段字典列表,这样我就可以为额外的数据处理创建一个dataframe) 但是,我必须构造一个非常大的try/expect块来完成这项工作。我想知道是否有更清晰/聪明的方法来实现这一点 我遇到的问题是,细节['element']有时不存在或没有值,如果子元素['value']上不存在,则会引发非类型异常,因为它不存在,因此无法捕获 因此,如果发生这种情况,我有一个很大的try/except块将变量设置为' 我试图将详
rawJson = json.loads(data.decode('utf-8'))
issues = rawJson['issues']
print('Parsing data...')
for ticket in issues:
details = ticket['fields']
try:
key = ticket['key']
except TypeError:
key = ''
try:
issueType = details['issuetype']['name']
except TypeError:
issueType = ''
try:
description = details['description']
except TypeError:
description = ''
try:
status = details['status']['name']
except TypeError:
status = ''
try:
creator = details['creator']['displayName']
except TypeError:
creator =''
try:
assignee = details['assignee']['displayName']
except TypeError:
assignee =''
try:
lob = details['customfield_10060']['value']
except TypeError:
lob =''
.... There is a long list of this
您可以使用它来提供默认值以简化此代码:
d = {'a': 1, 'c': 2}
value = d.get('a', 0) // value = 1 here because d['a'] exists
value = d.get('b', 0) // value = 0 here because d['b'] does not exist
所以你可以写:
for ticket in issues:
details = ticket['fields']
key = ticket.get('key', '')
description = details.get('description', '')
issueType = details['issuetype'].get('name') if 'issuetype' in details else ''
...