Иерархический вывод данных из хранилища данных App Engine в JSON? - PullRequest
1 голос
/ 19 августа 2009

У меня большой иерархический набор данных в хранилище данных App Engine. Иерархия сохраняется путем хранения данных в группах сущностей, так что я могу вытащить целое дерево, просто зная ключ верхнего элемента, например:

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

Вопрос: как теперь вывести эти данные в формате JSON и сохранить иерархию?

У Google есть служебный класс GqlEncoder, который добавляет поддержку результатов запроса к хранилищу данных в simplejson, но он в основном выравнивает данные, разрушая иерархию.

Есть предложения?

1 Ответ

1 голос
/ 19 августа 2009

Я полагаю, что вы имеете в виду этот код , и упомянутое вами "выравнивание" выполняется строками 51-52:

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

в то время как остальная часть кода подходит для ваших целей. Итак, как бы вы хотели представить GQL-запрос, если вы не представляете, какой массив JS (список Python) содержит в нем объекты? Не ясно, кроме группы сущностей (которую вы полностью восстанавливаете), что дает ей иерархию; это проблема "родителя"?

Во всяком случае, после прояснения лучше всего скопировать и отредактировать этот файл в свой собственный код (он не предназначен для того, чтобы позволить вам переопределить только этот фрагмент).

...