2012-07-27 8 views
9

토네이도를 사용하여 Python으로 JSON 객체를 출력하는 방법에 대한 아이디어가 있습니다. 좋은 예제, 튜토리얼, 라이브러리 또는 JSONP 객체를 출력하는 한 줄 코드.토네이도 Jornp 객체를 작성하십시오.

당신은 클래스를 등록하는 방법

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를 반환 할 수 있습니다

답변

22

토네이도가 tornado.escape.json_encode을 제공하는 데이터베이스 연결,이다 2.6+ 또는 simplejson (Python 2.5)

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

출력 :하십시오 JSONP 응답시

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

:

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

def main(db_fn=None): 

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

CONN은 - 단순히 파이썬에 json를 래핑