从json文件上的定义创建文件夹结构

时间:2015-01-31 21:52:43

标签: javascript json node.js filesystems

如何使用此json结构创建文件夹结构

{
  "europe": {
    "poland":{},
    "france":{},
    "spain":{},
    "greece":{},
    "UK":{},
    "germany":"txt"
  },
  "Asia": {
    "india":"xml"
  },
  "Africa":null
}

以这样的方式

  1. 具有对象值的属性变为文件夹
  2. 带字符串值的属性是文件,其值代表其扩展名
  3. 具有空值的属性是没有扩展名的文件
  4. 嵌套对象成为嵌套文件夹
  5. 任何人都知道如何在nodejs中执行此操作?

2 个答案:

答案 0 :(得分:3)

您必须递归迭代并创建文件夹和文件。

未经测试,但此类内容应该接近

var fs  = require('fs');
var obj = {
    "europe": {
        "poland": {},
        "france": {},
        "spain": {},
        "greece": {},
        "UK": {},
        "germany": "txt"
    },
    "Asia": {
        "india": "xml"
    },
    "Africa": null
};

(function create(folder, o) {
    for (var key in o) {
        if ( typeof o[key] === 'object' && o[key] !== null) {
            fs.mkdir(folder + key, function() {
                if (Object.keys(o[key]).length) {
                    create(folder + key + '/', o[key]);
                }
            });
        } else {
            fs.writeFile(folder + key + (o[key] === null ? '' : '.' + o[key]));
        }
    }
})('/', obj);

FIDDLE

答案 1 :(得分:0)

更新

我也在寻找一种基于 JSON 创建文件和文件夹的解决方案,并发现了这个有趣的节点模块“node-jsondir”

以下是其工作原理的示例:

groupBy('room_id')

经过测试,有效。

节点模块为 https://www.npmjs.com/package/jsondir