使用Node.js将Url / Path转换为Json

我最近build立了一个小节点程序,能够以一个精确的pathconsole.log所有的文件。 我从这个函数得到的结果如下所示:

/Volumes/TimeCapsule/movies/movie1 movie1.mp4 /Volumes/TimeCapsule/movies/movie2 movie2.mp4 /Volumes/TimeCapsule/movies/movie3 movie3.mp4 

现在我的问题是:我怎么能设法将每个path转换为JSON,所以我可以例如显示在一个HTML页面的电影文件夹的所有文件?

我想有这样的事情:

 { "Volumes": { "TimeCapsule": { "Movies":{ "Title": "Movie1" "Title": "Movie2" "Title": "Movie3" } } } } 

先谢谢你。

顺便说一句,这里是我的散步function:

 var fs = require('fs'); var walk = function (currentPath) { console.log(currentPath); var files = fs.readdirSync(currentPath); //Returns array of filename in currenpath for (var i in files) { var currentFile = currentPath + '/' + files[i]; var stats = fs.statSync(currentFile); if (stats.isFile()) { console.log(currentFile.replace(/^.*[\\\/]/, ''));); } else if (stats.isDirectory()) { walk(currentFile); } } }; 

好的,我们走吧:

 var fs = require( "fs" ); function walk( path, arr ) { var ret = {}; arr = Array.isArray( arr ) ? arr : []; fs.readdirSync( path ).forEach(function( item ) { var current = path + "/" + item; var stats = fs.statSync( current ); if ( stats.isFile() ) { arr.push( current ); } else if ( stats.isDirectory() ) { walk( current, arr ); } }); arr.forEach(function( item ) { var i, len; item.split( "/" ).reduce(function( obj, path, i, parts ) { if ( ( i + 1 ) === parts.length ) { obj.Title = path; } else { obj[ path ] = obj[ path ] || {}; return obj[ path ]; } }, ret); }); return ret; } 

这没有经过testing,但也许它会给你一些想法如何做到这一点。

这是我真正想要的,我甚至添加了一个path部分,所以我可以访问每个单个文件的path:

 var fs = require('fs'), path = require('mypath') function walk(path) { var stats = fs.lstatSync(mypath), info = { path: mypath, Title: path.basename(mypath) }; if (stats.isDirectory()) { info.type = "folder"; info.children = fs.readdirSync(filename).map(function(child) { return walk(mypath + '/' + child); }); } else { info.type = "file"; } return info; } console.log(walk('/Users/maximeheckel/Desktop')); 

感谢您的帮助。