Python 如何将脚本要解析的JSON键存储在另一个JSON中?

Python 如何将脚本要解析的JSON键存储在另一个JSON中?,python,json,python-3.x,Python,Json,Python 3.x,假设我有一个名为jsondata.JSON的JSON: { "apiURL": [ { "name":"Target", "url":"https://redsky.target.com/v2/plp/collection/13562231,14919690,13728423,14919033,13533833,13459265,14917313,13519319,13533837,14919691,13479115,47778362,15028201,51

假设我有一个名为jsondata.JSON的JSON:

{
  "apiURL": [
    {
      "name":"Target", 
      "url":"https://redsky.target.com/v2/plp/collection/13562231,14919690,13728423,14919033,13533833,13459265,14917313,13519319,13533837,14919691,13479115,47778362,15028201,51467685,50846848,50759802,50879657,13219631,13561421,52062271,14917361,51803965,13474244,13519318?key=eb2551e4accc14f38cc42d32fbc2b2ea&pricing_store_id=2088&multichannel_option=basics&storeId=321"
    },
    {
      "name":"Safeway",
      "url":"https://shop.safeway.com/bin/safeway/product/aemaisle?aisleId=1_23_2&storeId=1483"
    }
  ]
}
我想告诉我的脚本从url包含的API检索数据,如下所示:

# Load JSON containing URLs of APIs of grocery stores
with open(json_data, 'r') as data_f:
    data_dict = json.load(data_f)

# Organize API URLs
for apiurl in data_dict['apiURL']:
    responses.append('')
    responses[index] = requests.get(apiurl['url'])
    responses[index].raise_for_status()
    storenames.append(apiurl['name'])
    index += 1
first_target_item = responses[0].json()['search_response']['items']['Item'][0]['title']
first_safeway_item = responses[1].json()['productsinfo'][0]['description']
如您所见,我当前的实现要求我手动输入脚本,从每个API解析哪个键(最后两行)。我希望最终能够从动态数量的杂货店中检索信息,但每个网站都将其商品的数据存储在API的不同键中


我如何能够自动化该过程(例如,将要解析的密钥存储在jsondata.json中),这样我就不必每次添加新的杂货店时都更新脚本?

如果您可以修改jsondata.json,您可以保留如下数组:

{
  "name":"Target", 
  "accessKeys": ["search_response", "items", "Item", "0", "title"],
  "url":"https://redsky.target.com/v2/plp/collection/13562231,14919690,13728423,14919033,13533833,13459265,14917313,13519319,13533837,14919691,13479115,47778362,15028201,51467685,50846848,50759802,50879657,13219631,13561421,52062271,14917361,51803965,13474244,13519318?key=eb2551e4accc14f38cc42d32fbc2b2ea&pricing_store_id=2088&multichannel_option=basics&storeId=321",
}
在python代码中:

keys=["search_response", "items", "Item", "0", "title"] #apiUrl['accessKeys']
target_item=responses[0].json()
for i in target_item:
    target_item=target_item[i]
你可以实现更多的自动化

def get_keys(data, keys):
    for key in keys:
        data=data[key]
    return data
items=[]
for index, apiurl in enumerate(data_dict['apiURL']):
    responses.append('')
    responses[index] = requests.get(apiurl['url'])
    responses[index].raise_for_status()
    storenames.append(apiurl['name'])
    items.append(get_keys(responses[index].json(), apiUrl['accessKeys']))

如何让脚本查看动态数量的键?在我的示例中,Target有5个访问密钥,Safeway有3个。我很清楚,json文件中分别有5个和3个键的数组,但是我的Python脚本如何知道要搜索多少个键呢?