有没有一种方法可以使用Jinja2从HTTP POST请求中过滤JSON数据?

时间:2019-12-31 01:27:45

标签: json jinja2

我正在使用Home Assistant,它通过Jinja2模板数据。

是否可以使用Jinja2模板删除HTTP POST标头并仅保留JSON数据?

我正在使用的数据是:

POST /api/V1/sensor/UploadSensor HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: al.lewei50.com
Connection:close
Content-Length: 448

{"method":"uploadsn","version":"ABC","type":"AL_TH","SN":"ABC","Data":[13.8,8.4,352.8,364.4,10.0,257.7,7616,50,25.700,29030.140,null,4868,3060,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,2575,2540,2501,10.0,9.9,253.6,251.4,50.03,50.04,50.04],"Information":["null","000.01","ABC  ","ABC"],"Status":"4883"}

,我需要有一个仅显示模板:

{"method":"uploadsn","version":"ABC","type":"AL_TH","SN":"ABC","Data":[13.8,8.4,352.8,364.4,10.0,257.7,7616,50,25.700,29030.140,null,4868,3060,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,2575,2540,2501,10.0,9.9,253.6,251.4,50.03,50.04,50.04],"Information":["null","000.01","ABC  ","ABC"],"Status":"4883"}

1 个答案:

答案 0 :(得分:0)

HTTP响应由标头,空白行和响应正文组成。由于只需要响应主体,因此您的解决方案是:

  • 将数据拆分为空行,然后
  • 获取结果列表的第二个元素。

假设您的数据位于名为response的变量中,则需要类似以下内容:

{{ response.split('\n\n')[1] }}