【问题标题】:Generating json in python for app engine在python中为应用程序引擎生成json
【发布时间】:2011-08-17 20:19:02
【问题描述】:

我对 python 有点陌生,我想知道在循环中生成 json 的最佳方法是什么。我可以在循环中将一堆字符串混合在一起,但我确信有更好的方法。这里有一些更具体的。我在 python 中使用应用程序引擎来创建一个返回 json 作为响应的服务。

举个例子,假设有人从服务请求用户记录列表。服务查询记录后,需要为找到的每条记录返回 json。也许是这样的:

{records: 
{record: { name:bob, email:blah@blah.com, age:25 } },
{record: { name:steve, email:blah@blahblah.com, age:30 } }, 
{record: { name:jimmy, email:blah@b.com, age:31 } }, 
}

请原谅我的 json 格式不正确。感谢您的帮助。

【问题讨论】:

  • 我认为你想多了。 Python有一个JSON库,只需生成数据结构并传递给json.dumps

标签: python json google-app-engine


【解决方案1】:

创建自己的 JSON 是愚蠢的。请改用jsonsimplejson

>>> json.dumps(dict(foo=42))
'{"foo": 42}'

【讨论】:

    【解决方案2】:

    我的问题是如何添加到 动态字典?所以foreach 在我的记录列表中记录,添加一个 记录到字典中。

    您可能希望创建一个字典列表。

    records = []
    record1 = {"name":"Bob", "email":"bob@email.com"}
    records.append(record1)    
    record2 = {"name":"Bob2", "email":"bob2@email.com"}
    records.append(record2)
    

    然后在应用引擎中,使用上面的代码将records导出为json。

    【讨论】:

      【解决方案3】:

      这里的几个步骤。

      首先导入simplejson

      from django.utils import simplejson
      

      然后创建一个函数,该函数将返回带有适当数据头的 json。

      def write_json(self, data):
        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(data))
      

      然后从您的 post 或 get 处理程序中,创建一个包含所需数据的 python 字典并将其传递到您创建的函数中。

       ret = {"records":{
         "record": {"name": "bob", ...}
         ...
       }
       write_json(self, ret)
      

      【讨论】:

      • 我的问题是如何动态添加到字典中?所以foreach记录在我的记录列表中,添加一条记录到字典中。
      • 由于原始问题专门与 appengine 相关,值得注意的是 django 库不是自动可用的。您需要在 app.yaml stackoverflow.com/questions/11174750/… 中包含对它的引用
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多