python - 如何修剪 JSON 数组以获取特定值
问题描述
所以我正在使用 Echo Arena API,它以 JSON 格式为我提供了以下一些内容。我正在尝试获取当时比赛中所有用户的姓名,如此处所示,有球员姓名:rnedds 和更远的 DarkCobra866 。我怎样才能只得到名字而不得到其他信息?使用 Python 3。
{
"teams":[
{
"players":[
{
"name":"rnedds",
"rhand":[
-3.3230002,
-1.2370001,
-18.701
],
"playerid":0,
"position":[
-2.7520001,
-0.96800005,
-18.622002
],
"lhand":[
-2.414,
-1.5630001,
-18.487001
],
"userid":1663152230440088,
"stats":{ }
},
{
"name":"DarkCobra866",
"rhand":[
-5.3710003,
-1.978,
-7.5110002
],
"playerid":4,
"position":[
-5.5280004,
-1.3520001,
-7.4040003
],
"lhand":[
-5.6520004,
-1.7540001,
-7.4020004
],
"userid":2649496045086049,
"stats":{ }
}
]
}
]
}
目前,对于 API 中的其他信息,我的代码如下所示
matchdetails = {
'echosessionid' : data['sessionid'],
'echoclientname' : data['client_name'],
'echogameclockdisplay' : data['game_clock_display'],
'echogamestatus' : data['game_status']
}
currentMatchDetails = json.dumps(matchdetails)
解决方案
将您的 JSON 字符串加载到这样的字典中:
import json
json_text = '''
{
"teams":[
{
"players":[
{
"name":"rnedds",
"rhand":[
-3.3230002,
-1.2370001,
-18.701
],
"playerid":0,
"position":[
-2.7520001,
-0.96800005,
-18.622002
],
"lhand":[
-2.414,
-1.5630001,
-18.487001
],
"userid":1663152230440088,
"stats":{ }
},
{
"name":"DarkCobra866",
"rhand":[
-5.3710003,
-1.978,
-7.5110002
],
"playerid":4,
"position":[
-5.5280004,
-1.3520001,
-7.4040003
],
"lhand":[
-5.6520004,
-1.7540001,
-7.4020004
],
"userid":2649496045086049,
"stats":{ }
}
]
}
]
}
'''
data = json.loads(json_text)
players = [player['name'] for team in data['teams'] for player in team['players']]
print(players)
上面的代码将导致:
['rnedds', 'DarkCobra866']
推荐阅读
- android - 从 Firestore 加载的图像与 Picasso 未显示在卡片视图中
- angular - RouterLink set isActive 通过两条路由
- amazon-web-services - 创建 API 网关失败
- codenameone - 如何使用代号从 iOS 设备获取 GMT 时区偏移量(如 GMT+7:00)?
- c# - 如何使用 C# 实现日期、zip 和电话掩码的全球化?
- c++11 - 提高不变的无序映射的查询访问性能
- python-3.x - 如何从两个单独的数据框中按日期查找不匹配的值?
- javascript - 访问另一个对象中的对象值
- aws-api-gateway - 对 RestSharp 请求使用 AWS v4 签名?
- php - 如何检查可空类型严格的代码气味