如何从JSON的all_players列表中获取玩家对应的team属性值
错误原因
你的写法问题在于all_players是数组结构,只能通过数字索引访问元素,不能直接把name当数组下标使用。数组中的每个元素本身就是同时包含name、team字段的独立对象,只要遍历到对应元素,就能同时取出两个目标字段,不需要提前知道元素索引。
实现方案
以下均以Python处理JSON结构为例:
遍历获取全部玩家的名称与队伍信息
直接循环遍历all_players数组,逐个读取元素内的字段即可:
# 假设data是已经加载完成的JSON解析结果(字典类型) for match_info in data["data"]: player_list = match_info["players"]["all_players"] for player in player_list: # 单个player对象就包含你需要的两个字段,直接取值 print(f"玩家名:{player['name']},所属队伍:{player['team']}")
根据指定玩家名称查询对应队伍
如果只需要找特定玩家的队伍信息,不需要遍历全量生成结果,匹配到目标后直接终止循环即可:
target_player = "Player 3" result_team = None for match_info in data["data"]: player_list = match_info["players"]["all_players"] for player in player_list: if player["name"] == target_player: result_team = player["team"] break if result_team is not None: break print(result_team) # 输出:Red
生成玩家名-队伍的快速查询映射
如果需要多次根据玩家名查询所属队伍,可以一次性遍历生成字典,后续查询不需要再循环:
name2team = {} for match_info in data["data"]: for player in match_info["players"]["all_players"]: name2team[player["name"]] = player["team"] # 直接按键取值即可 print(name2team["Player 1"]) # 输出:Blue print(name2team["Player 2"]) # 输出:Blue
提示:你给出的示例JSON中,
all_players数组最后一个元素末尾存在冗余逗号,实际解析时如果抛出JSON格式错误,优先删除这个多余逗号即可。
内容的提问来源于stack exchange,提问作者Navis
相关产品推荐
相关产品推荐

