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

如何在Python中正确解析JSONP格式响应?

问题描述示意图

JSONP 不是合法的JSON格式,它本质是一段JavaScript函数调用代码,结构固定为自定义回调函数名(实际JSON数据),所以直接调用json.loads()必然解析失败。

通用解析方法(无第三方依赖,最安全)

直接用正则提取括号包裹的核心JSON内容,再交给json.loads()解析即可,不需要提前知道回调函数名,兼容绝大多数场景:

import re
import json

def parse_jsonp(jsonp_text: str):
    # 匹配规则:忽略前后空白、末尾分号,提取括号内的所有内容(支持JSON带换行)
    match_result = re.search(
        r'^\s*[\w$]+\s*\((.*)\)\s*;?\s*$',
        jsonp_text,
        flags=re.DOTALL
    )
    if not match_result:
        raise ValueError("输入内容不是合法的JSONP格式")
    return json.loads(match_result.group(1))

# 调用示例
jsonp_content = 'jQuery112400123({"code":0,"msg":"success","data":{"id":1,"name":"test"}})'
parsed_data = parse_jsonp(jsonp_content)
print(parsed_data["data"]["name"]) # 输出 test

注意事项

  • 该方法不需要执行JavaScript代码,不存在代码注入风险,适合处理来源不可信的接口响应
  • 如果是用requests等库请求接口,直接把响应文本传入上述函数即可,不需要额外处理编码
  • 不要直接用eval()执行JSONP内容解析,恶意接口返回的JS代码可能直接在本地执行带来安全风险

内容的提问来源于stack exchange,提问作者MUHAMMAD SHAHID RAFI C P

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 12:39:14