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

如何用Python提取嵌套JSON中的所有键?迭代方法遇阻求方案

提取嵌套JSON中所有唯一键的解决方法

针对你提供的嵌套JSON数据,要收集所有出现过的键(比如authorised、firstName、href、id、lastName),核心思路是遍历所有子对象,收集每个对象的键并去重,下面给出两种常用语言的实现示例:

Python 实现

import json

# 你的JSON数据
json_str = '''{
  "results": [{
    "firstName": "Emma",
    "href": "https://192.168.1.198:8904/api/cardholders/569",
    "id": "569",
    "lastName": "Bennett"
  }, {
    "authorised": true,
    "firstName": "Dory",
    "id": "570",
    "lastName": "mcKormick"
  }]
}'''

# 解析JSON为字典
data = json.loads(json_str)

# 用集合存键,自动去重
all_keys = set()

# 遍历results里的每个对象,收集所有键
for item in data["results"]:
    all_keys.update(item.keys())

# 转成列表,如需排序可加sorted()
all_keys_list = list(all_keys)
# all_keys_list = sorted(all_keys)  # 排序后的列表

print(all_keys_list)

JavaScript 实现

const jsonData = {
  "results": [{
    "firstName": "Emma",
    "href": "https://192.168.1.198:8904/api/cardholders/569",
    "id": "569",
    "lastName": "Bennett"
  }, {
    "authorised": true,
    "firstName": "Dory",
    "id": "570",
    "lastName": "mcKormick"
  }]
};

const allKeys = new Set();
// 遍历每个子对象,收集键
jsonData.results.forEach(item => {
  Object.keys(item).forEach(key => allKeys.add(key));
});

// 转成数组
const allKeysArray = Array.from(allKeys);
console.log(allKeysArray);

核心逻辑说明

  1. 先定位到嵌套的子对象列表(也就是results数组);
  2. 遍历数组中的每个对象,提取它的所有键;
  3. 用集合(Set)存储键,利用集合自动去重的特性,避免重复键多次出现;
  4. 最后将集合转为列表/数组,就是所有存在的键的集合。

如果你之前尝试.keys()没成功,大概率是没遍历到所有子对象,或者没做去重处理,按照这个逻辑就能得到完整的键列表。

内容的提问来源于stack exchange,提问作者Geert Van Der Weide

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 23:55:08