web2py将存储对象转换为字符串

时间:2017-08-21 19:46:31

标签: python json web2py

我在web2py中有一些RESTful API调用,它们接收JSON文件。我使用curl通过命令行进行调用,如:

curl -H "Content-Type: application/json" --data @mydata.json https://mywebsite/doWork

在我的web2py控制器中,我已将其设置为读取POST请求。当我通过返回来检查request.vars时,它包含完整的JSON数据,但request.vars的类型为:class' gluon.storage.Storage'。

我需要控制器中的字符串格式的数据。但是,如果我执行str(request.vars),web2py会在我的数据前添加一个Storage标记。

@request.restful()
def doWork():

    def POST(*args, **vars):
        return(request.vars)

    return locals()

假设mydata.json文件很简单:

{     "关键":"价值" }

POST请求将返回{" key":" value"}作为gluon.storage.Storage对象。

如果我将行返回(request.vars)更改为return(str(request.vars)),则输出现在为:<存储{u' key&#39 ;: u' value'}>

如何将此request.vars转换为字符串,而不将Storage标记附加到前面,并将双引号更改为单引号?

1 个答案:

答案 0 :(得分:2)

如果您想将vars转换回JSON,可以使用Python json库或只使用response.json

    return response.json(vars)

或者,您可以将.json扩展名添加到请求中,只需直接返回vars

    return vars

以下请求:

curl -H "Content-Type: application/json" --data @mydata.json https://mywebsite/doWork.json

在这种情况下,web2py会自动将响应转换为JSON。

相关问题