2012-08-23 8 views
6

最近、appengineアプリで作業していました。私はアプリケーションへのリクエストに含まれるjsonデータを解析したいと思います。これを達成するためにrequesthandlerクラスのrequestオブジェクトを使用するにはどうすればよいですか?以下はappengineでjsonの書式設定されたリクエストを解析しています

は私が達成したいものを表示するコードの抜粋です:

import cgi 
import webapp2 
import datamethods 

from google.appengine.ext.webapp.util import run_wsgi_app 

class adduser(webapp2.RequestHandler): 
    def get(self): 
     # Get the phone number from json data in request. 
     userphone = self.request.get("phone") 
     # Get the name from json data in request. 
     name = self.request.get("name") 


app = webapp2.WSGIApplication([ 
    ('/adduser', adduser), 
    ('/sign', updatestatus), 
    ('/login',login) 
], debug=True) 


def main(): 
    run_wsgi_app(app) 

if __name__ == "__main__": 
    main() 

答えて

17

あなたがオブジェクト内に入ってくるJSON文字列を解析する必要があります。その後、属性にアクセスすることができます。

import json # Now you can import json instead of simplejson 
.... 
jsonstring = self.request.body 
jsonobject = json.loads(jsonstring) 
+0

brilliant..thanks .... 私はそうのような作り付けのJSONライブラリを使用:

 import json class message(webapp.RequestHandler): def post(self): self.response.headers['Content-Type'] = "text/plain" # self.response.out.write(self.request.body) data = json.loads(self.request.body) self.response.out.write(data['sux']) 
とそれはそれを解決する... – koladotnet

+1

理由だけではなく、あなたは本当にまだ、シンプルなJSONが必要ですジュソン? –

+0

Python SDKバージョン1.9.55以降。あなたはujsonを使うことができます。 UltraJSONは、純粋なC言語で記述された超高速JSONエンコーダおよびデコーダです – voscausa

0
import cgi 
import webapp2 
import datamethods 

from google.appengine.ext.webapp.util import run_wsgi_app 

class adduser(webapp2.RequestHandler): 
    def get(self): 
     items = [] 
     response = { } 

     userphone = self.request.get("phone") 
     name = self.request.get("name") 

     items.append({'userphone': userphone , 'name':name}) 
     response['userInformation'] = items 
     return response #return json data 


app = webapp2.WSGIApplication([ 
    ('/adduser', adduser), 
    ('/sign', updatestatus), 
    ('/login',login) 
], debug=True) 


def main(): 
    run_wsgi_app(app) 

if __name__ == "__main__": 
    main() 
関連する問題