我在 App Engine 数据存储区中有一个大型分层数据集。通过将数据存储在实体组中来保留层次结构,这样我就可以通过简单地知道顶部元素键来拉动整个树,如下所示:
query = db.Query().ancestor(db.get(key))
问题:我现在如何将此数据输出为 JSON 并保留层次结构?
Google 有一个名为 GqlEncoder 的实用程序类,它向 simplejson 添加了对数据存储查询结果的支持,但它基本上使数据扁平化,破坏了层次结构。
有什么建议吗?
最佳答案
我想您指的是 this code你提到的“扁平化”是由第 51-52 行完成的:
if isinstance(obj, db.GqlQuery):
return list(obj)
而代码的其余部分可以满足您的目的。那么,由于您不知道 GQL 查询包含的对象的 JS 数组(Python 列表),您希望如何表示它?目前尚不清楚,除了实体组(您正在完全恢复)之外,是什么赋予了它层次结构;是“ parent ”的问题吗?
无论如何,一旦澄清这一点,将该文件复制并编辑到您自己的代码中似乎是最好的(它的设计目的不是让您仅覆盖这一点)。
关于python - 从 App Engine 数据存储到 JSON 的分层数据输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1300694/