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 测试客户端发送 JSON

从 webhook 请求中解析 JSON

Django Webhook 接收 Mailgun 的 post 请求

如果第一个 JSON 参数不是“params”,如何从 Odoo 中的 Webhook 访问数据?

Telegram 向 webhook 发送重复的 POST JSON 请求

嗨,我是谷歌脚本的新手,我如何解析webhook?