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

web2py convert Storage object to string

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

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

在我的 web2py 控制器中,我将其设置为读取 POST 请求。当我通过 returning 检查 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 文件很简单,例如:

{ "key": "value" }

对 POST 的请求将 return {"key": "value"} 作为一个 gluon.storage.Storage 对象。

如果我将行 return(request.vars) 更改为 return(str(request.vars)) 现在输出为: < Storage {u'key' : u'值'}>

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

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

    return response.json(vars)

或者,您可以将 .json 扩展名添加到请求中,然后直接 return vars

    return vars

请求如下:

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

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