私はApp Engine Datastoreに大きな階層データセットを持っています。私は単純にそうように先頭の要素のキーを知ることにより、ツリー全体を引っ張ることができるように階層は、エンティティグループ内のデータを格納することによって保存されます。App Engine DatastoreからJSONへの階層的なデータ出力?
query = db.Query().ancestor(db.get(key))
質問:どのように私は今、出力このデータをとして行うには、 JSONと階層を保持しますか?
Googleには、データストアのクエリ結果をsimplejsonに追加するユーティリティクラスGqlEncoderがありますが、基本的にデータを平坦化して階層を破壊します。
提案がありますか?コードの残りの部分はあなたの目的のために細かいです
if isinstance(obj, db.GqlQuery):
return list(obj)
ながら:
これは '親'の問題で、それを階層として許可しています。 私は既存のライブラリを変更することができましたが、既にサポートしているライブラリがあるかどうかを最初に確認します。 – Christian
@Christian、良い考えですが、私はそれを知りません。私はあなたが別のメソッドにそのリスト(obj)の使用を抽出することをお勧めしますベースクラスは変更されていない機能を持つことができ、サブクラスはメソッドをオーバーライドし、必要な余分な処理を実行する(私はあなたがリストの入れ子リスト?)、ベースクラスの機能の99%を再利用しています。そのようなパッチは、アプリエンジンのオープンソースの部分に受け入れられる可能性があり、将来あなた自身で保守する必要はありません。 –