Генериране на JSON на структурата на директорията за използване от приспособлението за дърво на Webix

Работя върху проект, използващ Webix и Python/Flask, и се удрям в тухлена стена с изобразяване на джаджа за дървовиден изглед. Проблемът ми е правилното конструиране на JSON, необходим на джаджата. Опитвам се да генерирам структурата на директорията на даден пример:

Структура:

.
├── dirone
│   └── file
├── dirthree
│   ├── somedir
│   │   └── anotherfile
│   └── somefile
├── dirtwo
└── somefile

Желан резултат:

[
    {
        "value": "dirone",
        "path": "dirone",
        "type": "folder",
        "children": [
            {
                "value": "file",
                "path": "dirone/file",
                "type": "file"
            }
        ]
    },
    {
        "value": "dirtwo",
        "path": "dirtwo",
        "type": "folder",
        "children": []
    },
    {
        "value": "dirthree",
        "path": "dirthree",
        "type": "folder",
        "children": [
            {
                "value": "somefile",
                "path": "dirthree/somefile",
                "type": "file"
            },
            {
                "value": "somedire",
                "path": "dirone/file",
                "type": "folder",
                "children": [
                    {
                        "value": "anotherfile",
                        "path": "dirthree/somedir/anotherfile",
                        "type": "file"
                    }
                ]
            }
        ]
    },
    {
        "value": "somefile",
        "path": "somefile",
        "type": "file"
    }
]

Блъскам си главата в това през последните два часа, опитвайки се да намеря метод, който може да го изобрази. Някой има ли метод, който генерира структурата? Всяка помощ ще бъде високо оценена!


person user1777667    schedule 19.03.2015    source източник


Отговори (2)


Това всъщност не е решение, но приспособленията Webix могат да бъдат конфигурирани да използват json с различна структура или, в случай или дърво, да заредят обикновен списък със записи на данни и да изградят дървовидна структура чрез групиране на данни по някакъв параметър

Проверете например http://docs.webix.com/samples/17_datatree/01_loading/07_load_group.html

person Aquatic    schedule 20.03.2015
comment
Страхотно, това ще бъде полезно. Опитвам се да се отдалеча от PyQt; все още се опитвам да усетя някои от рамките на js widget. - person user1777667; 21.03.2015

Мисля, че стигнах до това, което ми трябва без os.walk(), но все още го правя чрез рекурсивна функция (boo):

def pathTree(path,id=0):
    id += 1
        tree = {'value': os.path.basename(path)}
        tree['path'] = path
    tree['id'] = id
        if os.path.isdir(path):
            tree['type'] = "folder"
            tree['data'] = [pathTree(os.path.join(path,x),id) for x in os.listdir(path)]
    else:
            tree['type'] = "file"
    return(tree)

Единственото нещо, което наистина искам сега (въпреки че все още не съм истински бенефициент), е да записва нивото/iter дълбочината.

Благодаря за предложенията!

person user1777667    schedule 20.03.2015