Python读取JSON文件并遍历children节点为每个子项分配变量的实现方案
问题诊断
你的代码存在两个核心逻辑错误:
- 加载JSON后得到的
data变量本身就是id为manager的根对象,不存在data['manager']这个键,遍历子节点直接取data['children']即可 - 每个子节点的姓名、年龄等信息都嵌套在
data字段下,不能直接从子节点根路径获取属性,需要走子节点['data']['属性名']的路径访问
实现代码
以下代码同时支持格式化输出要求的格式,也支持后续直接调用对应数据:
import json with open('data.json', encoding='utf-8') as json_file: data = json.load(json_file) # 存储所有子节点信息的列表,后续可以用children_list[0]、children_list[1]调用对应数据,更简洁易维护 children_list = [] # 遍历子节点生成要求的输出 for index, child in enumerate(data['children'], start=1): # 提取需要的字段 child_info = { "id": child["id"], "name": child["data"]["name"], "age": child["data"]["age"], "lastname": child["data"]["lastname"] } children_list.append(child_info) # 按要求格式输出 print(f'children{index}{{id={child_info["id"]}, name={child_info["name"]}, age="{child_info["age"]}", lastname={child_info["lastname"]}}}') # 如果确实需要生成children1、children2这类独立全局变量,可以取消注释下面这行 # globals()[f'children{index}'] = child_info # 后续调用示例:print(children_list[0]["name"]) 或者 启用全局变量后调用print(children1["age"])
说明:不推荐动态生成children1、children2这类独立全局变量,容易污染命名空间,使用列表
children_list按索引访问是更规范的实现方式。
运行输出示例
children1{id=user1, name=john, age="55", lastname=smith} children2{id=user2, name=mark, age="56", lastname=guri} children3{id=user3, name=alex, age="57", lastname=muller}
内容的提问来源于stack exchange,提问作者user16514127
相关产品推荐
相关产品推荐

