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

使用wbgapi调用世行API遇JSON解码错误,该如何解决?

解决wbgapi调用世界银行Doing Business数据库的JSON解码错误

错误原因分析

  1. 国家参数格式错误:你传入的countries是国家名称数组,但wbgapi的data.DataFrame方法要求countries参数使用ISO国家代码(如'CHN'、'USA'),而非中文/英文国家名称,API无法识别名称导致返回无效JSON。
  2. 请求URL过长:一次性传入所有国家(包括区域汇总代码)会生成超长URL,超出了世界银行API的URL长度限制,导致服务器返回非标准JSON,引发解码错误。
  3. 包含非国家的聚合体:你的请求中包含了区域/收入组代码(如AFE、AFW、ARB),这些聚合体可能没有对应指标数据,干扰了API的返回结果。

解决方案

步骤1:获取正确的国家代码列表

使用wbgapi内置方法获取所有成员国的ISO代码(自动排除区域汇总):

import wbgapi as wb

# 获取所有世界银行成员国的ISO 3字母代码,排除区域/收入组聚合体
countries = wb.economies.members('WLD')

步骤2:修正数据请求代码

使用正确的国家代码调用API,若国家数量过多导致URL超长,可分批请求并合并结果:

# 直接请求(若国家数量在URL长度限制内)
legal_enforcement = wb.data.DataFrame('ENF.CONT.COEN.ENFE.PR',
                                      countries,
                                      time=2017)

# 若仍报错(URL过长),分批请求示例
import pandas as pd

batch_size = 50
dfs = []
for i in range(0, len(countries), batch_size):
    batch_countries = countries[i:i+batch_size]
    df_batch = wb.data.DataFrame('ENF.CONT.COEN.ENFE.PR', batch_countries, time=2017)
    dfs.append(df_batch)

# 合并所有批次结果
legal_enforcement = pd.concat(dfs)

步骤3:验证指标有效性

确认指标代码在2017年的Doing Business数据库中存在,可通过以下代码检查:

# 检查指标的可用年份(source=2对应Doing Business数据库)
wb.series.info('ENF.CONT.COEN.ENFE.PR', source=2)

额外建议

  • 更新wbgapi到最新版本,避免版本兼容问题:pip install --upgrade wbgapi
  • 若仅需特定国家,可手动指定国家代码列表,进一步缩短请求URL长度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:30:11