Flask jsonify:以数字开头的键
假设我想在Flask中创建一个这样的JSON文档:
{"1": {"name": "Tom"}}
我不能直接使用 return jsonify(**kwargs)
,因为Python不允许变量名以数字开头,比如 1
。
那么,使用Flask的 jsonify
能创建这样的JSON文档吗?如果不行,我该怎么做呢?
说明:我想创建一个JSON文档,其中包含以id为索引的字典,而这些id是24个十六进制值的形式(来自MongoDB的ObjectId)。这意味着大多数情况下,id会以数字开头。
2 个回答
4
方便的是,你可以使用... **kwargs
!
>>> def echo(**kwargs):
... print kwargs
...
>>> echo(**{"1":{"name": "Tom"}})
{'1': {'name': 'Tom'}}
没错,你不能手动指定一个叫 1
的关键词参数... 但是你 可以 通过 **
这个关键词扩展操作符来传递一个叫 1
的关键词参数。
3
因为 flask.jsonify
接受的参数和 Python 的 dict
是一样的,所以你可以直接把一个 dict
作为参数传给它,让它自己处理其他的事情:
@app.route('/')
def hello_world():
# note key is an int, not just a string with leading digits
# in your case this could be a mongodb object
return jsonify({1: {'name': 'bob'}})
返回结果:
{
"1": {
"name": "bob"
}
}