Menghasilkan struktur direktori JSON untuk digunakan oleh widget pohon Webix

Saya sedang mengerjakan proyek menggunakan Webix dan Python/Flask dan saya menemui jalan buntu dengan merender widget tampilan pohon. Masalah saya adalah membangun JSON dengan benar yang dibutuhkan oleh widget. Saya mencoba membuat struktur direktori dari contoh yang diberikan:

Struktur:

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

Keluaran yang diinginkan:

[
    {
        "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"
    }
]

Saya telah memikirkan hal ini selama dua jam terakhir untuk mencoba mendapatkan metode yang dapat merendernya. Apakah ada metode yang menghasilkan struktur? Bantuan apa pun akan sangat dihargai!


person user1777667    schedule 19.03.2015    source sumber


Jawaban (2)


Ini sebenarnya bukan solusi, tetapi widget Webix dapat dikonfigurasi untuk menggunakan json dengan struktur berbeda atau, dalam kasus atau pohon, memuat daftar catatan data biasa dan membangun struktur pohon dengan mengelompokkan data berdasarkan beberapa parameter

Periksa misalnya http://docs.webix.com/samples/17_datatree/01_loading/07_load_group.html

person Aquatic    schedule 20.03.2015
comment
Keren, itu akan berguna. Saya mencoba menjauh dari PyQt; masih mencoba memahami beberapa kerangka widget js. - person user1777667; 21.03.2015

Saya pikir saya sudah mendapatkan apa yang saya butuhkan tanpa os.walk(), tapi saya masih melakukannya melalui fungsi rekursif (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)

Satu-satunya hal yang benar-benar saya inginkan saat ini (walaupun belum benar-benar mendapat manfaat) adalah mencatat level/kedalaman iter.

Terima kasih atas sarannya!

person user1777667    schedule 20.03.2015