2012-08-23 2 views
6

Arbeitet in letzter Zeit an einer appengine App. Ich möchte JSON-Daten, die in Anfragen enthalten sind, an die App analysieren. Wie verwende ich das Anfrageobjekt der Requesthandler-Klasse, um dies zu erreichen?Parsing JSON formatierte Anfragen in appengine

Unten ist ein Ausschnitt aus dem Code zu zeigen, was ich erreichen will:

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() 

Antwort

17

Sie haben den Eingang JSON-String in einem Objekt zu analysieren. Danach können Sie auf die Attribute zugreifen.

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

brilliant..thanks .... benutzte ich die eingebaute json Bibliothek wie so:

 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']) 
und löst es ... – koladotnet

+1

Sie noch brauchen Sie wirklich einfach json, warum nicht einfach Json? –

+0

seit Python SDK Version 1.9.55. Du kannst Ujson benutzen. UltraJSON ist ein ultra schneller JSON Encoder und Decoder, geschrieben in reinem C – 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()