2012-06-19 71 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數據中的信息。