python - 从深度嵌套的 JSON 中提取数据
问题描述
我是 JSON 数据的新手,我正试图深入了解位于 3 个数组和 JSON 文件字典内的嵌套非常深的字典。我正在尝试使用标签为“播放器”的字典。我正在尝试为所有团队提取球员,然后将其移动到 DataFrame 中,以便我可以用于其他分析。
我如何编写循环来获取这些数据?
这是我正在尝试做的,但它不起作用:
rostered = json.dumps(rostered_players)
player_value = [[
values['playerPoolEntry']['player']
]for values in rostered]
这是我正在使用的数据示例:
rostered =
'''[
[
{
"appliedStatTotal": 260.05,
"entries": [
[
{
"injuryStatus": "NORMAL",
"lineupSlotId": 2,
"playerId": 2977644,
"playerPoolEntry": {
"appliedStatTotal": 37.6,
"id": 2977644,
"keeperValue": 56,
"keeperValueFuture": 56,
"lineupLocked": false,
"onTeamId": 1,
"player": {
"firstName": "Todd",
"fullName": "Todd Gurley II",
"id": 2977644,
"injuryStatus": "ACTIVE",
"lastName": "Gurley II"
},
"rosterLocked": false,
"tradeLocked": false
}
}
]
]
}
],
[
{
"appliedStatTotal": 260.05,
"entries": [
[
{
"injuryStatus": "NORMAL",
"lineupSlotId": 4,
"playerId": 3892889,
"playerPoolEntry": {
"appliedStatTotal": 6.6000000000000005,
"id": 3892889,
"keeperValue": 5,
"keeperValueFuture": 5,
"lineupLocked": false,
"onTeamId": 2,
"player": {
"defaultPositionId": 3,
"firstName": "Dede",
"fullName": "Dede Westbrook",
"id": 3892889,
"lastName": "Westbrook"
},
"rosterLocked": false,
"tradeLocked": false
}
}
]
]
}
]
]'''
解决方案
一个可能的解决方案是按原样解析给定的 JSON。
rostered=json.loads(rostered)
player_values=[]
for level0 in rostered:
for level1 in level0:
if 'entries' in level1:
level2 = level1.get('entries')
for level3 in level2:
for level4 in level3:
if 'playerPoolEntry' in level4 and 'player' in level4.get('playerPoolEntry'):
player_values.append(level4.get('playerPoolEntry').get('player'))
推荐阅读
- python - 如何用 python pandas 表示嵌套的数据框
- android - 如何从firebase存储下载文件并在android中显示内容Uri的进度
- google-drive-api - 使用 Google Docs API 从 Google Drive 插入图片
- excel - 如何替换索引函数的数组部分以使其选择与标题匹配的任何列?
- sql - 如何在行之间只有一列不同的情况下将行组合在一起
- python - 如何使用python合并文件夹中的多个.csv
- sql - 如何在 SQL 中获取以下列的数值?
- github - 我无法让 gitHub 操作将我的包构建发布到 nuget.pkg.github
- c# - 如何使用 Blazor 创建用于刷新当前页面的 MainLayout?
- jquery - 弄清楚最后一步 Jquery Smart Wizard 5?