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

Python3如何遍历嵌套JSON并打印所有name字段值?

遍历嵌套JSON中所有name字段的解决方法

问题描述

我已将一段嵌套JSON数据赋值给变量mydict,目前可通过指定索引打印单个name字段的值,但不清楚如何遍历所有嵌套的name字段并仅打印这些值。

相关JSON数据

{
  "data": {
    "endpoints": {
      "edges": [
        {
          "node": {
            "name": "test1.net",
            "ipAddress": "1.2.3.4"
          }
        },
        {
          "node": {
            "name": "test2.net",
            "ipAddress": "4.3.2.1"
          }
        },
        {
          "node": {
            "name": "test3.net",
            "ipAddress": "0.0.0.0"
          }
        }
      ]
    }
  }
}

当前打印单个值的代码

print("Dictionary contains: ",mydict['data']['endpoints']['edges'][1]['node']['name'])

解决方案

方法一:针对固定结构的直接遍历

你的JSON结构固定,name字段都在edges列表的每个node对象中,直接遍历edges即可:

# 获取edges列表
edges_list = mydict['data']['endpoints']['edges']
# 遍历每个元素,提取name
for edge in edges_list:
    print(edge['node']['name'])

方法二:用列表推导式批量提取

如果需要先把所有name收集到列表中再处理,可使用列表推导式:

# 批量提取所有name到列表
all_names = [item['node']['name'] for item in mydict['data']['endpoints']['edges']]
# 遍历打印
for name in all_names:
    print(name)

方法三:通用递归遍历(适用于结构不确定的情况)

如果JSON结构可能变化,或存在其他层级的name字段,可通过递归遍历整个字典/列表,找出所有键为name的值:

def extract_all_names(obj):
    # 处理字典类型
    if isinstance(obj, dict):
        for key, val in obj.items():
            if key == 'name':
                yield val
            else:
                # 递归遍历子元素
                yield from extract_all_names(val)
    # 处理列表类型
    elif isinstance(obj, list):
        for item in obj:
            yield from extract_all_names(item)

# 调用函数并打印所有name
for name in extract_all_names(mydict):
    print(name)

内容的提问来源于stack exchange,提问作者axxic3

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:10:33