Подтвердить что ты не робот

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

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

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

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

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

<html>
    <head></head>
    <body>statusservertime</body>
</html>
4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

По какой-то причине функция авто-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

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)

Ответ 4

попробуйте, это должно работать как предполагалось

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)

Ответ 5

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

from bottle import request

json_data = request.json # json_data is in the dictionary format