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

如何指定Python请求API返回JSON的包含字段?

如何从API响应中仅提取所需的公司名称和官网地址?

问题背景

我用Python的requests库调用API获取创业公司数据,原代码会提取并保存所有返回的JSON数据,包含大量冗余信息。我只需要其中的公司名称(如iconicchain)和官网地址(如https://www.iconicchain.com),该怎么修改代码来实现?

原代码如下:

import json
import requests

resp = requests.get('https://api.oxoservices.eu/api/v1/startups?site=labs&startup_status=funded')

json_resp = json.loads(resp.text)


for company in json_resp['data']:

    
    print(json.dumps(company, indent=4))
    print()
    with open("test.json", "w", encoding='utf-8') as file:
        # file.write(str(json_resp))
        json.dump(json_resp, file, indent=4, sort_keys=True)

API返回的JSON核心结构示例:

"data": [
    {
        "name": "iconicchain",
        "website": "https://www.iconicchain.com",
        // 其他冗余字段...
    }
]

解决方案

通过遍历响应数据,仅提取目标字段并收集为新的数据结构,再统一写入文件即可。修改后的代码如下:

import json
import requests

# 发起API请求
resp = requests.get('https://api.oxoservices.eu/api/v1/startups?site=labs&startup_status=funded')
# 直接解析JSON响应,替代json.loads(resp.text)更简洁
json_resp = resp.json()

# 初始化列表存储过滤后的数据
filtered_companies = []

for company in json_resp['data']:
    # 仅提取需要的name和website字段,可自定义键名
    filtered_company = {
        "company_name": company["name"],
        "official_website": company["website"]
    }
    filtered_companies.append(filtered_company)
    # 打印单个公司的目标信息
    print(json.dumps(filtered_company, indent=4))
    print()

# 将过滤后的数据写入文件,避免循环内重复写入导致数据覆盖
with open("filtered_companies.json", "w", encoding='utf-8') as file:
    json.dump(filtered_companies, file, indent=4, ensure_ascii=False)

关键改动说明

  • 使用resp.json()直接解析API响应,代码更简洁高效;
  • 创建filtered_companies列表统一收集目标数据,解决原代码循环内反复写入文件导致数据被覆盖的问题;
  • 遍历每个公司对象时,仅保留name和website字段,生成新字典剔除冗余信息;
  • 写入文件时添加ensure_ascii=False,确保非ASCII字符(如中文)能正确保存和显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 13:54:37