1

AppEngineデータストアに大きな階層データセットがあります。エンティティグループにデータを格納することで階層が保持されるため、次のように最上位の要素キーを知っているだけでツリー全体をプルできます。

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)

コードの残りの部分はあなたの目的には問題ありません。では、含まれるオブジェクトの JS 配列 (Python リスト) がわからないので、GQL クエリをどのように表現しますか? エンティティ グループ (完全に回復している) 以外に、階層を与えるものは明らかではありません。「親」の問題ですか?

とにかく、それが明確になったら、そのファイルをコピーして独自のコードに編集するのが最善のようです (その 1 つだけをオーバーライドできるようには設計されていません)。

于 2009-08-19T15:36:49.943 に答える