使用Node.js将文件系统中的目录结构转换为JSON [英] Convert a directory structure in the filesystem to JSON with Node.js
本文介绍了使用Node.js将文件系统中的目录结构转换为JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
root
| _水果
| ___苹果
| ______图像
| ________ apple001.jpg
| ________ apple002.jpg
| _动物
| ___猫
| ______图像
| ________ cat001.jpg
| ________ cat002.jpg
我想使用Javascript和Node .js,听这个根目录和所有的子目录并创建一个镜像这个目录结构的JSON,每个节点包含类型,名称,路径和子节点:
data = [
{
type:folder,
name:animals,
path:/ animals,
孩子:[
{
type:folder,
name:cat,
path:/ animals / cat,
children:[
{
type:folder,
name:images,
path:/ animals / cat / images,
children:[
{
type:文件,
名称:cat001.jpg,
路径:/animals/cat/images/cat001.jpg
},{
type:file
名称:cat001.jpg,
路径:/animals/cat/images/cat002.jpg
}
]
}
]
}
]
}
];
这是一个coffeescript JSON:
data =
[
type:folder
name:animals
path:/ animals
children:
[
类型:文件夹
名称:猫
路径:/ animals / cat
儿童:
[
类型:$
名称:图像
路径:/ animals / cat / images
儿童:
[
类型:文件
名称:cat001.jpg
路径:/animals/cat/images/cat001.jpg
,
类型:文件
名称:cat001.jpg
路径:/animals/cat/images/cat002.jpg
]
]
]
]
如何在django视图中获取此json数据格式?(python)
解决方案
这是草图。错误处理作为读者的练习留下。
var fs = require('fs'),
path = require('path')
函数dirTree(filename){
var stats = fs.lstatSync(filename),
info = {
path:filename,
name:path.basename(filename)
};
if(stats.isDirectory()){
info.type =folder;
info.children = fs.readdirSync(filename).map(function(child){
return dirTree(filename +'/'+ child);
});
} else {
//假设它是一个文件。在现实生活中,它可能是一个符号链接或
//其他的东西!
info.type =file;
}
返回信息;
}
if(module.parent == undefined){
// node dirTree.js〜/ foo / bar
var util = require('util' );
console.log(util.inspect(dirTree(process.argv [2]),false,null));
}
I have a file structure like this:
root
|_ fruits
|___ apple
|______images
|________ apple001.jpg
|________ apple002.jpg
|_ animals
|___ cat
|______images
|________ cat001.jpg
|________ cat002.jpg
I would like to, using Javascript and Node.js, listen to this root directory and all sub directories and create a JSON which mirrors this directory structure, each node contains type, name, path, and children:
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"
}
]
}
]
}
]
}
];
Here's a 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"
]
]
]
]
how to get this json data format in django views?(python)
解决方案
Here's a sketch. Error handling is left as an exercise for the reader.
var fs = require('fs'),
path = require('path')
function dirTree(filename) {
var stats = fs.lstatSync(filename),
info = {
path: filename,
name: path.basename(filename)
};
if (stats.isDirectory()) {
info.type = "folder";
info.children = fs.readdirSync(filename).map(function(child) {
return dirTree(filename + '/' + child);
});
} else {
// Assuming it's a file. In real life it could be a symlink or
// something else!
info.type = "file";
}
return info;
}
if (module.parent == undefined) {
// node dirTree.js ~/foo/bar
var util = require('util');
console.log(util.inspect(dirTree(process.argv[2]), false, null));
}
这篇关于使用Node.js将文件系统中的目录结构转换为JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文