Python 如何处理json密钥镜像
我解释我的问题: 我有一个来自API的JsonResponse,如果我要的书是可用的,那么在响应中包含参数,如果它不可用,我没有一些参数,那么我如何处理这个问题,而不使用Raise Key错误来停止代码Python 如何处理json密钥镜像,python,json,Python,Json,我解释我的问题: 我有一个来自API的JsonResponse,如果我要的书是可用的,那么在响应中包含参数,如果它不可用,我没有一些参数,那么我如何处理这个问题,而不使用Raise Key错误来停止代码 result = requests.get('https://api.rainforestapi.com/request',params) jsonStringResult = json.dumps(result.json()) jsonResult = json.loads(jsonStri
result = requests.get('https://api.rainforestapi.com/request',params)
jsonStringResult = json.dumps(result.json())
jsonResult = json.loads(jsonStringResult)
print(jsonResult['product']['title'])
autori = jsonResult['product']['authors']
for autore in autori:
print(autore['name'])
print(jsonResult['product']['buybox_winner']['availability']['raw'])
print(jsonResult['product']['buybox_winner']['price']['raw'])
categorie = jsonResult['product']['categories']
for i in range(len(categorie)):
if i == len(categorie)-1:
print(categorie[i]['name'])
问题出在“买盒赢家”中,因为当书无法购买时,就没有买盒赢家,所以我必须处理两种情况。当这本书无法出版时,你能帮我解决这个问题吗?与评论非常相似,但更为恰当和详细
something = jsonResult['product'].get('buybox_winner', {}).get('availability', {}).get('raw', None)
对于dicts,get方法尝试访问提供的键,并返回None(默认情况下)。如果该键不存在,则第二个one参数将覆盖要返回的默认值。因此,将{}设置为第二个参数可以让你一直使用get方法,直到你需要访问的最后一个键。你可以简单地放置
jsonResult=result.json()
而不是转储/加载。你可以使用例如如果jsonResult['product']中的'buybox\u winner':
来测试键是否存在。或者使用bb=jsonResult['product'].get('busybox',None)
,然后如果bb:
继续访问'bb['price']等。这些都是正常的字典方法,与json无关,请参阅中的的更多详细信息,请参阅第6.10.2节。这里的成员资格测试操作我只需要在这里进行一个try-catch块