如何用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);
核心逻辑说明
- 先定位到嵌套的子对象列表(也就是
results数组); - 遍历数组中的每个对象,提取它的所有键;
- 用集合(Set)存储键,利用集合自动去重的特性,避免重复键多次出现;
- 最后将集合转为列表/数组,就是所有存在的键的集合。
如果你之前尝试.keys()没成功,大概率是没遍历到所有子对象,或者没做去重处理,按照这个逻辑就能得到完整的键列表。
内容的提问来源于stack exchange,提问作者Geert Van Der Weide
相关产品推荐
相关产品推荐

