2012-06-19 107 views
1

有没有一种方法可以轻松提取POST请求正文中的json数据部分? 举例来说,如果有人张贴到与JSON数据形式的身体www.example.com/post,我的GAE服务器将通过调用接收请求:使用python提取帖子正文请求中的json数据

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..... 

我只是想能够调用一个函数来提取身体的JSON一部分开始于{“数据”:......部分。

有没有一个简单的功能,我可以打电话来做到这一点?

回答

0

你可以试试:

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] 

但这是危险,并采取假设一个公平的,林不知道哪个框架您使用,瓶,瓶,的theres很多,请使用相应的呼叫到POST 检索值,基于框架,如果你真的使用一个。

我认为你的意思是这样做self.request.get("Data")如果你正在使用自己的GAE。

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

2

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

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

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