假设我想在Flask中创建以下JSON文档:
{"1": {"name": "Tom"}}
我不能只调用return jsonify(**kwargs)
,因为Python禁止命名以数字开头的变量,例如1
。
是否可以使用Flask的jsonify
创建这样的JSON文档?如果没有,我的解决方法是什么?
澄清:我想创建一个JSON文档,其中包含由id索引的dicts,而id的形式为24个十六进制值(来自MongoDB的ObjectId)。这意味着大多数时间ID都以数字开头。
答案 0 :(得分:4)
方便地,您可以使用... **kwargs
!
>>> def echo(**kwargs):
... print kwargs
...
>>> echo(**{"1":{"name": "Tom"}})
{'1': {'name': 'Tom'}}
是的,您无法手动指定名为1
的单个关键字参数...但您可以通过{{1} 传递名为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"
}
}