2015-01-31 43 views
3

如何能在这样的方式一个JSON文件

  1. 性质与对象的值成为文件夹
  2. 使用该JSON结构

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

    我创建一个文件夹结构,创建自定义的文件夹结构

  3. 字符串值的属性是文件,它们的值表示它们的扩展名
  4. 具有空值的属性是没有扩展名的文件
  5. 嵌套对象成为嵌套文件夹

任何人都知道如何在nodejs中做到这一点?

+0

所以'Africa'是一个文件,而不是一个文件夹? – adeneo 2015-01-31 21:54:33

+0

是的。只是一个没有扩展名的文件。一个文件夹总是用一个对象来表示,该对象可以是空的或包含其他嵌套对象 – shanks 2015-01-31 21:55:09

回答

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