使用Node.js将文件系统中的目录结构转换为JSON [英] Convert a directory structure in the filesystem to JSON with Node.js

查看:177
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆