eine Idee, wie ein JSON-Objekt in Python mit Tornado ausgeben. Alle guten Beispiele, Tutorials, Bibliotheken oder ein Zeilencode, der ein JSONP-Objekt ausgibt.Tornado schreibe ein Jsonp-Objekt
9
A
Antwort
22
Tornado tornado.escape.json_encode
bietet, die einfach json
auf Python wickelt 2.6+ oder simplejson
auf Python 2.5. Es ist einfach zu bedienen:
from tornado.escape import json_encode
obj = {
'foo': 'bar',
'1': 2,
'false': True
}
self.write(json_encode(obj))
Ausgänge:
{"1": 2, "foo": "bar", "false": true}
Für eine JSONP Antwort:
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
Sie können json obj auf diese Weise
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
Rückkehr Klasse
def main(db_fn=None):
tornado.options.parse_command_line()
application = tornado.web.Application([
(r"/get_datasets", GetDatasetsHandler),
(r"/get_years", GetYearsHandler),
)
Conn registrieren - ist die Datenbankverbindung
Verwandte Themen
- 1. Tornado Escape Pound # Zeichen
- 2. Tornado URL Abfrageparameter
- 3. Tornado Python: Tornado Server Integration mit NGINX
- 4. Tornado request.body
- 5. Tornado Blocking Code
- 6. Tornado Coroutine
- 7. Schreibe ein Struts2 Plugin
- 8. RESTful Authentifizierung mit Tornado
- 9. Tornado asynchronen Post multipart
- 10. Tornado-Plot in R
- 11. Warum installiert "pip install tornado" das Tornado-Modul nicht?
- 12. Tornado websockets Unterstützung binär
- 13. Tornado Websocket async Hintergrundaufgabe
- 14. Tornado Coroutine - Benutzerdefinierte Funktion
- 15. Wie schreibe ich ein Tag?
- 16. Ich schreibe ein MySQL Plugin
- 17. Wie schreibe/schreibe ich ein komplexes Objekt mit XmlWriter/XmlReader
- 18. Wie HTTPS Tornado Server
- 19. Tornado sicher websocket timeout
- 20. Tornado Äquivalent Verzögerungs
- 21. Tornado blockierende asynchrone Anfragen
- 22. Datei-Upload mit Tornado
- 23. Tornado auf PyPy
- 24. Tornado und WTForms
- 25. run multiple tornado processess
- 26. Tornado statisches Datei-Routing
- 27. Handhabung ein nicht definierte Template-Variable in Tornado
- 28. Tornado-Server: enable CORS fordert
- 29. Defacto Projektvorlage für Python Tornado
- 30. Tornado vs wsgi (mit gunicorn)