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

循环中判断JSON是否为空并追加数据的代码问题求助

问题分析与解决方案

核心问题

你的代码存在两个关键错误,导致数据覆盖和追加异常:

  • 错误1:未调用JSON解析方法:else块中json_data.append(r.json)是将Response.json方法本身作为元素添加,而非调用该方法获取JSON数据,最终导致列表中混入方法对象。
  • 错误2:判断逻辑不合理:仅当json_data为空时直接赋值API返回结果,若API返回空列表,json_data会始终保持为空,导致后续循环持续覆盖而非追加数据。

修正后的代码

from datetime import date
import pandas as pd
import requests

today = date.today()
json_data = []

for month_start in pd.date_range('2014-01-01', today, freq='MS'):
    month_end = (month_start + pd.offsets.MonthEnd(1))
    # 计算Unix时间戳(毫秒级)
    month_start_unix = (month_start - pd.Timestamp("1970-01-01")) // pd.Timedelta('1ms')
    month_end_unix = (month_end - pd.Timestamp("1970-01-01")) // pd.Timedelta('1ms')
    API_ENDPOINT = "你的API链接"  # 替换为实际链接
    # 向Viriciti API发送请求
    r = requests.get(url=API_ENDPOINT, headers=Headers)
    # 错误提示语句
    if r.status_code == 200:
        print('数据获取成功')
        # 获取当前请求的JSON数据(字典列表格式)
        current_data = r.json()
        # 将当前数据的元素逐一追加到总列表中
        json_data.extend(current_data)
        # 根据是否追加了有效数据打印提示
        if len(current_data) == 0:
            print('本次请求无数据')
        else:
            print(f'追加了{len(current_data)}条数据至JSON')
    else:
        print(f"请求出现{r.status_code}错误")

print(json_data)

修正说明

  1. 统一使用extend追加数据:不管json_data初始是否为空,直接用extend将API返回的列表元素合并到总列表中,避免覆盖问题。
  2. 正确调用r.json()方法:必须加上括号执行方法,才能获取实际的JSON数据。
  3. 优化提示信息:根据当前请求返回的数据量打印对应提示,便于排查空数据的请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 18:03:27