Flask jsonify:以数字开头的键

1 投票
2 回答
1040 浏览
提问于 2025-04-17 17:17

假设我想在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"
  }
}

撰写回答