Задать вопрос
VMesser
@VMesser
gitter.im/VBA-developers

Как свободно ходить по дереву json в обоих направлениях?

Приветствую, задача простая: организовать опросник в json c возможностью простого возврата на предыдущий шаг.

Каждый следующий вопрос зависит от текущего ответа. Получается дерево.

Представляю это так: текущая нода содержит вопрос и массив ответов. Каждый ответ это такая же нода, которая содержит следующий вопрос и массив ответов.
Для обработки любой ноды используется один и тот же метод. Вложенные ноды я могу получить из текущей, т.к. они там по определению находятся.

Но как мне тогда вернуться на уровень выше? Подозреваю, что есть библиотеки, которые позволяют знать из текущего элемента JSON дерева структуру всего дерева. Примерно как это происходит в js с DOM HTML-страницы.
  • Вопрос задан
  • 271 просмотр
Подписаться 1 Простой 5 комментариев
Решения вопроса 1
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Не ленитесь гуглить. Вот с налету нашел вам пример реализации нужного вам json
spoiler
[
  {
    "id": 1,
    "parentId": null,
    "name": "Root",
    "children": [
      {
        "id": 2,
        "parentId": 1,
        "name": "Section A",
        "children": [
          {
            "id": 4,
            "parentId": 2,
            "name": "Page 1",
            "children": []
          },
          {
            "id": 5,
            "parentId": 2,
            "name": "Page 2",
            "children": []
          }
        ]
      },
      {
        "id": 3,
        "parentId": 1,
        "name": "Section B",
        "children": [
          {
            "id": 6,
            "parentId": 3,
            "name": "Page 3",
            "children": []
          }
        ]
      }
    ]
  }
]

Корректируйте под свою задачу. Пишите соответствующий класс на Python для ноды этого json с нужными вам методами «получить_родителя», «получить_наследника», «проверить_корень_ли_я», ну и для создания-удаления наследников парочку методов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы