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

如何提取游戏王卡牌JSON数据集中的所有唯一键名?

最简实现方案

直接用Python处理,全程逻辑非常简单,利用集合自动去重的特性就能快速拿到结果,不需要复杂操作。

仅提取卡牌顶层键的版本

如果只需要每一张卡牌对象直接下属的不重复键(也就是你提到的id/name/atk这一级的键),直接跑下面的代码即可:

import requests

# 拉取全量卡牌数据
res = requests.get("https://db.ygoprodeck.com/api/v7/cardinfo.php")
all_cards = res.json()["data"]

# 用集合存储键,自动完成去重
unique_keys = set()
for card in all_cards:
    unique_keys.update(card.keys())

# 输出排序后的键列表,方便后续建表用
print(f"总计不重复顶层键数量:{len(unique_keys)}")
print(sorted(unique_keys))

运行前如果没装requests库,先执行pip install requests安装即可,接口返回全量数据体积不大,整个脚本跑完只需要几秒。

提取所有层级嵌套键的版本

如果你还需要拿到嵌套结构里的键(比如card_sets数组里每个对象的键、card_images/card_prices这类子节点的键),加一个简单的递归遍历函数就行:

import requests

def fetch_all_keys(target, key_store):
    if isinstance(target, dict):
        key_store.update(target.keys())
        for val in target.values():
            fetch_all_keys(val, key_store)
    elif isinstance(target, list):
        for item in target:
            fetch_all_keys(item, key_store)

res = requests.get("https://db.ygoprodeck.com/api/v7/cardinfo.php")
card_data = res.json()["data"]
all_level_keys = set()
fetch_all_keys(card_data, all_level_keys)
print(sorted(all_level_keys))

提示:拿到排序后的键列表之后,你可以直接对照着定义SQL表的字段,不会因为个别卡牌缺字段漏建列。如果后续需要导入SQL,也可以直接基于这个键列表做字段映射,不用逐行遍历猜字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:51:56