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

如何获取嵌套JSON的所有层级键?keys()无法返回嵌套键

如何获取嵌套JSON的所有层级键?

要提取嵌套JSON中所有层级的键,需要通过递归遍历的方式处理嵌套结构(包括嵌套的对象和数组中的对象),而不是仅调用表层的keys()方法。以下是具体的实现方案(以Python为例):

实现步骤

  1. 将JSON字符串解析为Python的字典/列表结构;
  2. 编写递归函数,遍历所有层级的结构:
    • 遇到字典时,收集当前键,并递归处理对应的值;
    • 遇到数组时,遍历数组中的每个元素,递归处理每个元素;
    • 遇到字符串、数字等无键的类型时,直接跳过。

代码示例

import json

# 你的嵌套JSON数据
json_str = '''
{
"xyz": {
"1": "a",
"2": "b",
"3": "c",
"4": "d",
"5": {
"6": {
"7": [
{
"8": "e",
"9": "f",
"10": "g",
"11": "h"
},
{
"8": "i",
"9": "j",
"10": "k",
"11": "l"
},
{
"8": "m",
"9": "n",
"10": "o",
"11": "p"
}
]
}
}
}
}
'''

# 解析JSON为Python数据结构
data = json.loads(json_str)

def collect_all_keys(obj):
    keys = []
    if isinstance(obj, dict):
        # 收集当前字典的键,再递归处理每个值
        for key in obj:
            keys.append(key)
            keys.extend(collect_all_keys(obj[key]))
    elif isinstance(obj, list):
        # 遍历数组中的每个元素,递归处理
        for item in obj:
            keys.extend(collect_all_keys(item))
    return keys

# 获取所有层级的键
all_keys = collect_all_keys(data)

# 可选:去重并按数字顺序排序(如果需要唯一且有序的键列表)
unique_sorted_keys = sorted(list(set(all_keys)), key=lambda x: int(x) if x.isdigit() else x)

# 输出结果
print(", ".join(unique_sorted_keys))

输出结果

运行上述代码后,会输出:1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9, xyz(如果不需要去重,直接输出all_keys即可得到包含重复键的列表)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:57:36