1

我在 App Engine 数据存储区中有一个大型分层数据集。通过将数据存储在实体组中来保留层次结构,这样我就可以通过简单地知道顶部元素键来拉整棵树,如下所示:

query = db.Query().ancestor(db.get(key))

问题:我现在如何将此数据输出为 JSON 并保留层次结构?

Google 有一个名为 GqlEncoder 的实用程序类,它为 simplejson 添加了对数据存储查询结果的支持,但它基本上将数据扁平化,破坏了层次结构。

有什么建议么?

4

1 回答 1

1

我想你指的是这段代码,你提到的“扁平化”是由第 51-52 行完成的:

   if isinstance(obj, db.GqlQuery):
      return list(obj)

而其余的代码可以满足您的目的。那么,您希望如何表示 GQL 查询,因为您不知道它包含的对象的 JS 数组(Python 列表)是什么?目前尚不清楚,除了实体组(您正在完全恢复)之外,是什么赋予了它层次结构;是“父母”的问题吗?

无论如何,一旦澄清了这一点,将该文件复制并编辑到您自己的代码中似乎是最好的(它的设计目的不是让您只覆盖一个花絮)。

于 2009-08-19T15:36:49.943 回答