如何获取嵌套JSON的所有层级键?keys()无法返回嵌套键
如何获取嵌套JSON的所有层级键?
要提取嵌套JSON中所有层级的键,需要通过递归遍历的方式处理嵌套结构(包括嵌套的对象和数组中的对象),而不是仅调用表层的keys()方法。以下是具体的实现方案(以Python为例):
实现步骤
- 将JSON字符串解析为Python的字典/列表结构;
- 编写递归函数,遍历所有层级的结构:
- 遇到字典时,收集当前键,并递归处理对应的值;
- 遇到数组时,遍历数组中的每个元素,递归处理每个元素;
- 遇到字符串、数字等无键的类型时,直接跳过。
代码示例
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
相关产品推荐
相关产品推荐

