2012-07-27 16 views
9

लिखने के लिए कोई विचार है कि टोरनाडो का उपयोग करके अजगर में JSON ऑब्जेक्ट को आउटपुट कैसे करें। कोई भी अच्छा उदाहरण, ट्यूटोरियल, पुस्तकालय या एक पंक्ति कोड जो JSONP ऑब्जेक्ट को आउटपुट करता है।टॉरनाडो एक जेसनपी ऑब्जेक्ट

उत्तर

22

तूफान tornado.escape.json_encode प्रदान करता है, जो केवल अजगर पर json लपेटता है 2.6+ या पाइथन 2.5 पर simplejson

from tornado.escape import json_encode 
obj = { 
    'foo': 'bar', 
    '1': 2, 
    'false': True 
    } 
self.write(json_encode(obj)) 

आउटपुट:

{"1": 2, "foo": "bar", "false": true} 

एक JSONP प्रतिक्रिया के लिए:

callback = self.get_argument('callback') 
jsonp = "{jsfunc}({json});".format(jsfunc=callback, 
    json=json_encode(obj)) 
self.set_header('Content-Type', 'application/javascript') 
self.write(jsonp) 
यह उपयोग करने के लिए आसान है
1

आपको लगता है कि जिस तरह से

import json 

class GetYearsHandler(tornado.web.RequestHandler): 
    def get(self): 
     try: 
      response = get_years(self.get_argument("dataset_id")) 
      result = {'status':'success', 'response': response} 
      kk = tornado.escape.json_encode(result) 
      kk = wrap_callback(self, kk) 
      self.write(kk) 
     except Exception, e: 
      print >> sys.stderr, "Error occured:\n%s" % format_exc() 
      self.write(json.dumps({'status': 'fail', 'error': "Error occured:\n%s" % format_exc()})) 

def get_years (dataset_id): 
    dates=[] 
    years=[] 
    conn = condb() 
    cur = conn.cursor() 
    data = {'dataset_id':dataset_id} 
    cur.execute("SELECT layers.start_time FROM layers, datasets WHERE (layers.dataset_id=datasets.id) AND (datasets.business_id=%(dataset_id)s)",data) 
    for row in cur.fetchall(): 
     dates.append(row[0]) 
    date="" 
    for date in dates: 
     year = int(date.year) 
     if not year in years: 
      years.append(year) 
    conn.close() 
    years.sort() 
    return years 

में json obj वापस आ सकते हैं वर्ग रजिस्टर करने के लिए

def main(db_fn=None): 

    tornado.options.parse_command_line() 
    application = tornado.web.Application([ 
    (r"/get_datasets", GetDatasetsHandler), 
    (r"/get_years", GetYearsHandler), 
) 

Conn - डेटाबेस कनेक्शन

संबंधित मुद्दे