Бутылка и Джсон - PullRequest
       6

Бутылка и Джсон

26 голосов
/ 18 августа 2010

Как мне вернуть данные json из обработчика запроса бутылки?Я вижу метод dict2json в src бутылки, но я не уверен, как его использовать.

Что в документации:

@route('/spam')
def spam():
    return {'status':'online', 'servertime':time.time()}

Дает мне это, когда я поднимаю страницу:

<html>
    <head></head>
    <body>statusservertime</body>
</html>

Ответы [ 5 ]

44 голосов
/ 18 августа 2010

Просто верните диктовку. Bottle выполняет преобразование в JSON для вас.

Допускаются даже словари. Они преобразуются в json и возвращаются с заголовком Content-Type, установленным в application / json. Чтобы отключить эту функцию (и передать дикты промежуточному программному обеспечению), вы можете установить для bottle.default_app (). Autojson значение False.

@route('/api/status')
def api_status():
    return {'status':'online', 'servertime':time.time()}

Взято из документации.

http://bottlepy.org/docs/stable/api.html#the-bottle-class

6 голосов
/ 17 сентября 2010

По какой-то причине функция авто-json бутылки не работает для меня.Если он не работает для вас, вы можете использовать этот декоратор:

def json_result(f):
    def g(*a, **k):
        return json.dumps(f(*a, **k))
    return g

Также удобно:

def mime(mime_type):
    def decorator(f):
        def g(*a, **k):
            response.content_type = mime_type
            return f(*a, **k)
        return g
    return decorator
3 голосов
/ 17 сентября 2010

return {'status':'online', 'servertime':time.time()} отлично работает для меня. Вы импортировали time?

Это работает:

import time
from bottle import route, run

@route('/')
def index():
    return {'status':'online', 'servertime':time.time()}

run(host='localhost', port=8080)
0 голосов
/ 01 августа 2017

легко получить JSON, используя модуль запроса бутылки

from bottle import request

json_data = request.json # json_data is in the dictionary format
0 голосов
/ 28 апреля 2015

попробуй это должно работать как задумано

from bson.json_util import dumps
from bottle import route, run
import time

@route('/')
def index():
     return {'status':'online', 'servertime':dumps(time.time()) }

run(host='localhost', port=8080)
...