You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 14:06:03