Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python tornado编写Jsonp对象_Python_Json_Tornado - Fatal编程技术网

Python tornado编写Jsonp对象

Python tornado编写Jsonp对象,python,json,tornado,Python,Json,Tornado,知道如何使用Tornado在python中输出JSON对象吗。任何输出JSONP对象的好例子、教程、库或单行代码。您可以用这种方式返回json obj import json class GetYearsHandler(tornado.web.RequestHandler): def get(self): try: response = get_years(self.get_argument("dataset_id"))

知道如何使用Tornado在python中输出JSON对象吗。任何输出JSONP对象的好例子、教程、库或单行代码。

您可以用这种方式返回json obj

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
注册班级

def main(db_fn=None):

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

conn-is数据库连接

Tornado提供了
Tornado.escape.json_encode
,它在Python2.6+上简单地包装了
json
,或者在Python2.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)