2016-11-04 3 views
1

Есть ли способ вернуть список как список JSON из web2py?вернуть список как JSON из web2py

Когда я ударил по моему маршруту, заканчивающемуся .json, web2py преобразует словари в действительный JSON. Если возвращаемое значение является список, однако, он ведет себя неожиданно

return ["test", "test"] 

дисплеи

testtest 

и

return [dict(test="test"), dict(test="test")] 

разбивает его полностью (хром жалуется ERR_INVALID_CHUNKED_ENCODING). Поведение ожидать, очевидно, следующие действительные строки JSON соответственно:

["test", "test"] 

и

[{"test":"test"}, {"test":"test"}] 

ответ

0

регистрации услуги JSon с @service.json декоратора и называя его `приложение/контроллер/call/json/method 'дал мне поведение, которое я ожидал:

def f(): 
    return ["test1", "test2"] 

def call(): 
    return service() 

Соответствующий onse тело

["test1", "test2"] 

с содержанием типа, установленным в JSon

2

Если вы хотите, чтобы вернуть ответ JSON, ваша функция должна либо вернуть JSON или вызвать выполнение тем, что будет производить JSON. В web2py представление будет выполняться только в том случае, если функция контроллера возвращает словарь, поэтому ваша функция не приведет к выполнению представления (поскольку он не возвращает словарь). Если ваша функция вернула словарь, вам все равно нужно было бы определить вид .json или явно включить вид generic.json через response.generic_patterns (хотя generic.json на самом деле не подходит в вашем случае, так как он преобразует весь словарь, возвращаемый функцией, в JSON - поэтому вы не можете использовать его для вывода только списка).

Самое простое решение только для вывода JSON непосредственно:

import json 
    ... 
    return json.dumps(['test', 'test']) 

или еще проще:

return response.json(['test', 'test']) 
Смежные вопросы