用python从post body请求中提取json数据

2024-09-28 22:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以轻松地提取POST请求主体中的json数据部分? 例如,如果有人将带有json数据的表单主体发布到www.example.com/post,我的GAE服务器将通过调用:

jsonstr = self.request.body

然而,当我查看jsonstr时,我会得到如下信息:

str: \r\n----------------------------8cf1c255b3bd7f2\r\nContent-Disposition: form-data;
name="Actigraphy"\r\n Content-Type: application/octet-
stream\r\n\r\n{"Data":"AfgCIwHGAkAB4wFYAZkBKgHwAebQBaAD.....

我只想能够调用一个函数来提取从{“Data”开始的主体的json部分:。。。。。。章节。

我可以调用一个简单的函数来完成这个任务吗?


Tags: 数据方法函数服务器comjson表单data
3条回答

这取决于提交之前在浏览器端是如何编码的,但通常您会得到如下的POST数据:

jsonstr = self.request.POST["Data"]

如果这不起作用,你可能想给我们一些关于“数据”是如何编码到客户端POST数据的信息。

有一个误解,你给我们显示的字符串不是json数据,它看起来像一个POST体。你必须用cgi.parse_multipart之类的东西来解析尸体。 然后可以像aschmid00所回答的那样解析json。但是你只分析数据而不是身体。

在这里你可以找到一个working code that shows how to use cgi.FieldStorage for parsing the POST body。 这个问题也是answered here.

您可以尝试:

import json
values = 'random stuff .... \r\n {"data":{"values":[1,2,3]}} more rnandom things'
json_value = json.loads(values[values.index('{'):values.rindex('}') + 1])
print json_value['data'] # {u'values': [1, 2, 3]}
print json_value['data']['values'] # [1, 2, 3]

但这是危险的,需要相当多的假设,我不确定你在使用哪个框架,瓶子,瓶子,瓶子,有很多,请使用适当的调用POST 根据框架检索值(如果您确实在使用框架)。

我想如果你是单独使用GAE的话,你应该这么做。

https://developers.google.com/appengine/docs/python/tools/webapp/requestclass#Request_gethttps://developers.google.com/appengine/docs/python/tools/webapp/requestclass#Request_get_all

相关问题 更多 >