Flask jsonify:以数字开头的键

时间:2013-02-27 08:04:01

标签: python json flask naming-conventions

假设我想在Flask中创建以下JSON文档:

{"1": {"name": "Tom"}}

我不能只调用return jsonify(**kwargs),因为Python禁止命名以数字开头的变量,例如1

是否可以使用Flask的jsonify创建这样的JSON文档?如果没有,我的解决方法是什么?

澄清:我想创建一个JSON文档,其中包含由id索引的dicts,而id的形式为24个十六进制值(来自MongoDB的ObjectId)。这意味着大多数时间ID都以数字开头。

2 个答案:

答案 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"
  }
}