Как мне обработать JSON-запрос в бутылке?

Мне нужно получить данные из JSON, переданные Ajax от клиента. В основном я использовал что-то вроде этого:

@route('/ajax')
def serve_ajax():
    return main.parse_request(json.dumps(dict(request.GET)))

Где main.parse_request - это функция, которая содержит логику для работы с переменными в JSON (это основная процедура нашего игрового движка).

Так что проблема в том, что я не могу правильно обрабатывать переменные JSON, преобразуя request.GET в диктовку: потому что, как я уже писал, я не могу передавать вложенные объекты и массивы. Также у каждого значения есть строковый тип, в то время как мне нужно иметь целочисленные типы для целых чисел и строковый тип для остальных.

Или, поскольку я могу получить исходную строку запроса (с помощью request.query_string), как я могу преобразовать строку запроса в исходный объект JSON?

Ответ 1

Теперь, начиная с бутылки 0.10, request.json готов к использованию :)

Документ здесь.

Ответ 2

request.json ограничен MEMFILE_MAX.

Другой способ работает, если данные запроса больше, чем MEMFILE_MAX

json.load(request.body)