Python从响应JSON读取特定数据

Python从响应JSON读取特定数据,python,json,Python,Json,我不熟悉Python和JSON。我正在调用一个API,作为响应主体,我得到以下信息: {'product': 'Cycle', 'available': 20, 'blocked': 0, 'orderBooked': 0, 'transfer': 0, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '2000112', 'locationId': '745', 'locationCode': '425', 'stockType': '

我不熟悉Python和JSON。我正在调用一个API,作为响应主体,我得到以下信息:

{'product': 'Cycle', 'available': 20, 'blocked': 0, 'orderBooked': 0, 'transfer': 0, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '2000112', 'locationId': '745', 'locationCode': '425', 'stockType': 'IN STOCK', 'adminStock': {'rp': 0, 'management': 0, 'rc': 0, 'total': 0, 'default': 0}, 'isBlocked': False, 'plannedDate': None, 'plannedUpdate': True, 'bookedQuantity': 0}
{'product': 'Cooker', 'available': 958, 'blocked': 10, 'orderBooked': 10, 'transfer': 30, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '589620', 'locationId': '420', 'locationCode': '695', 'stockType': 'PRE ORDER', 'adminStock': {'rp': 0, 'management': 0, 'rc': 0, 'total': 0, 'default': 0}, 'isBlocked': False, 'plannedDate': None, 'plannedUpdate': True, 'bookedQuantity': 0}
{'product': 'Cycle', 'available': 96220, 'blocked': 0, 'orderBooked': 0, 'transfer': 0, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '2000112', 'locationId': '745', 'locationCode': '425', 'stockType': 'CONFIRMED', 'adminStock': {'rp': 0, 'management': 0, 'rc': 0, 'total': 0, 'default': 0}, 'isBlocked': False, 'plannedDate': None, 'plannedUpdate': True, 'bookedQuantity': 0}
{'product': 'Lapms', 'available': 89958, 'blocked': 1890, 'orderBooked': 1045, 'transfer': 230, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '78963', 'locationId': '896', 'locationCode': '463', 'stockType': 'TRANSIT', 'adminStock': {'rp': 0, 'management': 0, 'rc': 0, 'total': 0, 'default': 0}, 'isBlocked': False, 'plannedDate': None, 'plannedUpdate': True, 'bookedQuantity': 0}
我上面提到的数据将根据API请求而变化。因此,无论答案是什么。基于产品,我需要打印多行数据。我的请求是读取此Json并获取以下数据:

Name:<'product'>, Code:<'lCode'>, Location:<'locationCode'>, Stock Type:<'stockType'>, Availability:<'available'>
名称:、代码:、位置:、库存类型:、可用性:
因此,对于上述Json,输出应该如下所示:

Name:Cycle, Code:2000112, Location:425, Stock Type:PRE ORDER, Availability:20
Name:Cooker, Code:589620, Location:695, Stock Type:<'stockType'>, Availability:958
Name:Cycle, Code:2000112, Location:425, Stock Type:CONFIRMED, Availability:96220
Name:Lapms, Code:78963, Location:463, Stock Type:TRANSIT, Availability:89958
名称:周期,代码:2000112,位置:425,库存类型:预订单,可用性:20
名称:炊具,代码:589620,位置:695,库存类型:958
名称:周期,代码:2000112,位置:425,库存类型:已确认,可用性:96220
名称:Lapms,代码:78963,位置:463,库存类型:运输,可用性:89958
那么根据这个时代,

产品出现时,数据输出将有那么多行


我不知道如何用Python解析Json。请帮助我理解如何获得以下格式的数据。我什么都没试过,因为我被卡住了

这就是我相信你想要的。正如一些评论所说,实际上这些输出应该被视为字典或列表,字典和/或列表嵌套在其中。了解差异很重要,因为第一个应通过其
进行处理,而后者则通过其
索引
进行处理。您可以找到一些关于如何阅读JSON/字典的额外信息

输出:

     Name     Code Location Stock type  Availability
0   Cycle  2000112      425   IN STOCK            20
1  Cooker   589620      695  PRE ORDER           958
2   Cycle  2000112      425  CONFIRMED         96220
3   Lapms    78963      463    TRANSIT         89958
     Name     Code Location Stock type  Availability
0   Cycle  2000112      425   IN STOCK            20
1  Cooker   589620      695  PRE ORDER           958
2   Cycle  2000112      425  CONFIRMED         96220
3   Lapms    78963      463    TRANSIT         89958
Name: Cycle, Code: 2000112, Location: 425, Stock type: IN STOCK, Availability: 20
Name: Cooker, Code: 589620, Location: 695, Stock type: PRE ORDER, Availability: 958
Name: Cycle, Code: 2000112, Location: 425, Stock type: CONFIRMED, Availability: 96220
Name: Lapms, Code: 78963, Location: 463, Stock type: TRANSIT, Availability: 89958
编辑:OPs说这是唯一一个包含多个JSON的列表。 它采用相同的逻辑:

import pandas as pd
json_output= [{'product': 'Cycle', 'available': 20, 'blocked': 0, 'orderBooked': 0, 'transfer': 0, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '2000112', 'locationId': '745', 'locationCode': '425', 'stockType': 'IN STOCK', 'adminStock': {'rp': 0, 'management': 0, 'rc': 0, 'total': 0, 'default': 0}, 'isBlocked': False, 'plannedDate': None, 'plannedUpdate': True, 'bookedQuantity': 0},{'product': 'Cooker', 'available': 958, 'blocked': 10, 'orderBooked': 10, 'transfer': 30, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '589620', 'locationId': '420', 'locationCode': '695', 'stockType': 'PRE ORDER', 'adminStock': {'rp': 0, 'management': 0, 'rc': 0, 'total': 0, 'default': 0}, 'isBlocked': False, 'plannedDate': None, 'plannedUpdate': True, 'bookedQuantity': 0},{'product': 'Cycle', 'available': 96220, 'blocked': 0, 'orderBooked': 0, 'transfer': 0, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '2000112', 'locationId': '745', 'locationCode': '425', 'stockType': 'CONFIRMED', 'adminStock': {'rp': 0, 'management': 0, 'rc': 0, 'total': 0, 'default': 0}, 'isBlocked': False, 'plannedDate': None, 'plannedUpdate': True, 'bookedQuantity': 0},{'product': 'Lapms', 'available': 89958, 'blocked': 1890, 'orderBooked': 1045, 'transfer': 230, 'restock': 0, 'unavailable': 0, 'total': 0, 'lCode': '78963', 'locationId': '896', 'locationCode': '463', 'stockType': 'TRANSIT', 'adminStock': {'rp': 0, 'management': 0, 'rc': 0, 'total': 0, 'default': 0}, 'isBlocked': False, 'plannedDate': None, 'plannedUpdate': True, 'bookedQuantity': 0}]
support_dict = {'Name':[],'Code':[],'Location':[],'Stock type':[],'Availability':[]}

for i in range(len(json_output)):
    support_dict['Name'].append(json_output[i]['product'])
    support_dict['Code'].append(json_output[i]['lCode'])
    support_dict['Location'].append(json_output[i]['locationCode'])
    support_dict['Stock type'].append(json_output[i]['stockType'])
    support_dict['Availability'].append(json_output[i]['available'])
df = pd.DataFrame(support_dict)
print(df)
输出:

     Name     Code Location Stock type  Availability
0   Cycle  2000112      425   IN STOCK            20
1  Cooker   589620      695  PRE ORDER           958
2   Cycle  2000112      425  CONFIRMED         96220
3   Lapms    78963      463    TRANSIT         89958
     Name     Code Location Stock type  Availability
0   Cycle  2000112      425   IN STOCK            20
1  Cooker   589620      695  PRE ORDER           958
2   Cycle  2000112      425  CONFIRMED         96220
3   Lapms    78963      463    TRANSIT         89958
Name: Cycle, Code: 2000112, Location: 425, Stock type: IN STOCK, Availability: 20
Name: Cooker, Code: 589620, Location: 695, Stock type: PRE ORDER, Availability: 958
Name: Cycle, Code: 2000112, Location: 425, Stock type: CONFIRMED, Availability: 96220
Name: Lapms, Code: 78963, Location: 463, Stock type: TRANSIT, Availability: 89958
编辑2:如果希望输出为行: 输出:

     Name     Code Location Stock type  Availability
0   Cycle  2000112      425   IN STOCK            20
1  Cooker   589620      695  PRE ORDER           958
2   Cycle  2000112      425  CONFIRMED         96220
3   Lapms    78963      463    TRANSIT         89958
     Name     Code Location Stock type  Availability
0   Cycle  2000112      425   IN STOCK            20
1  Cooker   589620      695  PRE ORDER           958
2   Cycle  2000112      425  CONFIRMED         96220
3   Lapms    78963      463    TRANSIT         89958
Name: Cycle, Code: 2000112, Location: 425, Stock type: IN STOCK, Availability: 20
Name: Cooker, Code: 589620, Location: 695, Stock type: PRE ORDER, Availability: 958
Name: Cycle, Code: 2000112, Location: 425, Stock type: CONFIRMED, Availability: 96220
Name: Lapms, Code: 78963, Location: 463, Stock type: TRANSIT, Availability: 89958

如果您解析json文件,您将得到标准的python字典

import json

json_data = '{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}'
parsed_json = (json.loads(json_data))

你想干什么?存储每行?解析行并将每个字段添加到列表中?您已经将其作为json获取。将其直接读入dict.并使用键访问。@Evalalo我需要读取此Json,并以我提到的格式打印数据,作为一行右键,但您使用的格式中的每个键是否包含单个项,或响应中的所有适当项?它不是单独的Json。这只是一个json然后你应该将它正确地格式化为一个列表,用逗号分隔。编辑后检查,你的json仍然格式不好,应该是fixedIts。编辑工作正常,而不是表格,我们可以将其设置为多个句子。完成。谢谢你的帮助。非常感谢