移除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))
关键说明:
- 正确提取JSON内容:JSONP的格式是
回调函数名(合法JSON),用正则提取括号内的部分,才能拿到真正的JSON字符串,而不是只替换函数名留下括号。 - 统一收集为数组:把每个赛事的JSON对象放进一个列表,最后转成JSON数组,这样整个输出只有一个根元素(数组),完全符合JSON规范,不会出现多根元素错误。
内容的提问来源于stack exchange,提问作者Learner
相关产品推荐
相关产品推荐

