Convertir en une structure de répertoire dans le système de fichiers JSON avec Node.js
J'ai un fichier de structure comme ceci:
root
|_ fruits
|___ apple
|______images
|________ apple001.jpg
|________ apple002.jpg
|_ animals
|___ cat
|______images
|________ cat001.jpg
|________ cat002.jpg
Je voudrais, à l'aide de Javascript et Node.js, écoutez cette racine le répertoire et tous les sous répertoires et de créer un JSON qui reflète cette structure de répertoire, chaque nœud contient le type, le nom, le chemin, et les enfants:
data = [
{
type: "folder",
name: "animals",
path: "/animals",
children: [
{
type: "folder",
name: "cat",
path: "/animals/cat",
children: [
{
type: "folder",
name: "images",
path: "/animals/cat/images",
children: [
{
type: "file",
name: "cat001.jpg",
path: "/animals/cat/images/cat001.jpg"
}, {
type: "file",
name: "cat001.jpg",
path: "/animals/cat/images/cat002.jpg"
}
]
}
]
}
]
}
];
Voici un coffeescript JSON:
data =
[
type: "folder"
name: "animals"
path: "/animals"
children :
[
type: "folder"
name: "cat"
path: "/animals/cat"
children:
[
type: "folder"
name: "images"
path: "/animals/cat/images"
children:
[
type: "file"
name: "cat001.jpg"
path: "/animals/cat/images/cat001.jpg"
,
type: "file"
name: "cat001.jpg"
path: "/animals/cat/images/cat002.jpg"
]
]
]
]
comment obtenir ce format de données json dans django point de vue?(python)
- C'est une exigence commune à l'acquisition de d3.js des données hiérarchiques. J'aimerais balise de cette question avec d3.js mais de Débordement de Pile permet à un maximum de 5 🙁
- Je souhaite que l'un de ces réponses serait de lire les chemins à partir de stdin, de sorte que vous pouvez convertir une liste de chemins d'accès dans un objet json, comme ceci:
find | paths2json
. Qui permettrait de tirer parti de toute la puissance d'Unix composabilité à travers les pipelines.
Vous devez vous connecter pour publier un commentaire.
Voici un croquis. La gestion des erreurs est laissé comme exercice pour le lecteur.
a + '/' + b
.return dirTree( path.join(filename, child));
il y a un mécanisme national de prévention Module
https://www.npmjs.com/package/directory-tree
Crée un objet représentant une arborescence de répertoires.
À partir de:
À:
Utilisation
Et vous pouvez également filtrer par extensions:
La accepté de répondre fonctionne, mais il est synchrone et sera profondément blessé vos performances, en particulier pour les grandes arborescences de répertoires.
Je vous encourage fortement à utiliser les asynchrone solution, il est à la fois plus rapide et sans blocage.
Basé sur la solution parallèle ici.
Exemple d'utilisation:
Mon CS exemple (w/express) basé sur Miika la solution:
Vous pouvez utiliser le code de ce projet, mais vous devez adapter le code à vos besoins:
https://github.com/NHQ/Node-FileUtils/blob/master/src/file-utils.js#L511-L593
À partir de:
À:
Faire:
Ici est un async solution:
Noter que lorsqu'un répertoire n'existe pas, un résultat vide est retournée plutôt qu'une erreur est générée.
Voici un exemple de résultat:
qui sera:
J'ai utilisé "marcher" lib dans ce cas, il devient de votre chemin de la racine et des promenades sur les fichiers et sur les répertoires de manière récursive et émet un événement de répertoire /fichier avec toutes les informations dont vous avez besoin à partir d'un nœud,
vérifier que la mise en œuvre -->
C'est le meilleur module pour cette tâche:
npm dree
Il ya beaucoup d'options personnalisées, à la suite pourrait être ceci:
Même une chaîne de caractères peut être renvoyé, comme ceci:
Exemple: