【问题标题】:Flask jsonify: key starting with digitFlask jsonify:以数字开头的键
【发布时间】:2013-02-27 08:04:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 解决方法,你为什么输出 1?你想要一个带有 jsonobject 的 jsonarray 吗?

标签: python json flask naming-conventions


【解决方案1】:

方便的话,你可以使用...**kwargs!

>>> def echo(**kwargs):
...     print kwargs
...
>>> echo(**{"1":{"name": "Tom"}})
{'1': {'name': 'Tom'}}

是的,您不能手动指定名为 1 的单个关键字参数...但您可以通过 ** 关键字扩展运算符传递一个名为 1 的关键字参数。

【讨论】:

    【解决方案2】:

    由于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"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-15
      • 2012-12-09
      • 2014-11-26
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多