Django 解析 json(来自 Webhooks)
Posted
技术标签:
【中文标题】Django 解析 json(来自 Webhooks)【英文标题】:Django parsing json (from Webhooks) 【发布时间】:2021-05-13 23:52:20 【问题描述】:我正在尝试将从 Mailchimp 收到的一些 json 解析为我的 Django 应用程序中的 Webhook。格式如下所示:
"type": "subscribe",
"fired_at": "2009-03-26 21:35:57",
"data":
"id": "8a25ff1d98",
"list_id": "a6b5da1054",
"email": "api@mailchimp.com",
"email_type": "html",
"ip_opt": "10.20.10.30",
"ip_signup": "10.20.10.30",
"merges":
"EMAIL": "api@mailchimp.com",
"FNAME": "Mailchimp",
"LNAME": "API",
"INTERESTS": "Group1,Group2"
我尝试了以下方法:
def marketing_email_handler(request):
if request.method == 'POST':
reqtype = request.body['type']
reqdata = request.body['data']
reqemail = request.body['data']['email']
我收到错误“字节索引必须是整数”。
我已尝试将其更改为以下内容,但这会导致错误“TypeError: 'int' object is not subscriptable”。而且做 request.json() 也会报错
reqtype = request.body[0]['type']
reqdata = request.body[0]['data']
reqemail = request.body[0]['data']['email']
我也尝试过(如 TypeError: byte indices must be integers or slices, not str 建议的那样)
json.loads(request.body)
但我收到以下信息:'JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)'
【问题讨论】:
究竟什么是“错误”? 第一个如何从 Django request 获取 Mailchimp 数据 json_data = json.loads(request.body) 这能回答你的问题吗? TypeError: byte indices must be integers or slices, not str @iklinac - 尝试执行 json.loads(request.body),但我收到以下信息:'JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError:期望值:第 1 行第 1 列 (char 0)' 【参考方案1】:解决了这个问题 - 这个问题是 'request.body' - 这应该是 request.POST
【讨论】:
以上是关于Django 解析 json(来自 Webhooks)的主要内容,如果未能解决你的问题,请参考以下文章
Django Webhook 接收 Mailgun 的 post 请求
如果第一个 JSON 参数不是“params”,如何从 Odoo 中的 Webhook 访问数据?