Python 如何处理json密钥镜像

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

我解释我的问题: 我有一个来自API的JsonResponse,如果我要的书是可用的,那么在响应中包含参数,如果它不可用,我没有一些参数,那么我如何处理这个问题,而不使用Raise Key错误来停止代码

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块