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

移除JSONP填充后多JSON根元素错误问题求助

解决JSONP处理后多JSON根元素的问题

你的问题出在两个地方:

  • 处理JSONP时只替换了回调函数名,没去掉包裹JSON的括号,得到的内容还带(),不是纯净的JSON
  • 每次直接打印单个JSON对象,多个对象连在一起就会出现多根元素的非法JSON结构

给你改好的代码,直接就能生成合法的JSON数组:

import json
import re
import requests

# 用来存储所有赛事数据的列表
all_race_data = []
headers = {}
payload = {}

for race in range(1, 3):
    url = f"https://s3-ap-southeast-2.amazonaws.com/racevic.static/2018-01-01/flemington/sectionaltimes/race-{race}.json?callback=sectionaltimes_callback"
    response = requests.request("GET", url, headers=headers, data=payload)
    
    # 提取JSONP括号里的纯净JSON内容
    json_str = re.search(r'\((.*)\)', response.text).group(1)
    # 把JSON字符串解析成Python字典
    race_data = json.loads(json_str)
    # 添加到总列表里
    all_race_data.append(race_data)

# 把整个列表转成合法的JSON字符串输出
print(json.dumps(all_race_data, indent=2))

关键说明:

  1. 正确提取JSON内容:JSONP的格式是回调函数名(合法JSON),用正则提取括号内的部分,才能拿到真正的JSON字符串,而不是只替换函数名留下括号。
  2. 统一收集为数组:把每个赛事的JSON对象放进一个列表,最后转成JSON数组,这样整个输出只有一个根元素(数组),完全符合JSON规范,不会出现多根元素错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:54:39