我试图返回这样一个函数:
@view_config(route_name='CreateNewAccount', request_method='GET', renderer='json')
def returnJSON(color, message=None):
return json.dumps({ "color" : "color", "message" : "message" }, default=json_util.default)
由于Pyramid自身的JSON编码,它将以如下方式进行双重编码:
^{pr2}$我该怎么解决这个问题?{a1或Mongo的类型需要使用^或相同的类型。在
字典似乎被JSON编码了两次,相当于:
也许您的Python框架会自动对结果进行JSON编码?试试这个:
^{pr2}$编辑:
要使用自定义的金字塔渲染器以您想要的方式生成JSON,请尝试以下操作(基于renderer docs和renderer sources)。在
启动时:
然后您就有了一个“json”和“自定义”渲染器来使用:
编辑2
另一个选择是返回一个
Response
对象,渲染器不应该修改它。E、 g您没有说,但是我假设您只是使用标准的
json
模块。在json
模块没有为JSON定义类;它使用标准Pythondict
作为数据的“本机”表示。json.dumps()
将dict
编码为JSON字符串;json.loads()
接受一个JSON字符串并返回一个dict
。在所以与其这样做:
尝试这样做:
^{pr2}$只需传回一个普通的
dict
。看看你的iPhone应用程序喜欢这个。在除了其他优秀的答案之外,我还想指出,如果您不希望视图函数返回的数据被传递json.dumps文件那么您不应该在视图配置中使用renderer=“json”。)
所以不是
你可以用
^{pr2}$string
呈现程序将按原样传递函数返回的字符串数据。然而,注册一个定制的渲染器是一个更好的方法(参见@orip的答案)相关问题 更多 >
编程相关推荐