В простом javascript я пытаюсь создать функцию, которая будет возвращать древовидную структуру (json) папки, ее подпапок и любых файлов. Я пытаюсь добиться этого с помощью рекурсии. Проблема с приведенным ниже кодом заключается в том, что он останавливается после первого рекурсивного вызова.
Я знаю, что в JS вы делаете ссылки, и мне нужно создать новый объект, которому я передаю значения из предыдущего вызова,но я изо всех сил пытаюсь это сделать.
function fun(file, json) {
var tempJson = {
'name' : json.name || '',
'children' : obj.children || new Object()
};
if (file.type == 'file') {
tempJson.type = 'file';
tempJson.children = {}; // this will be empty, since there are no children
}
else {
tempJson.type = 'dir';
var listed = file.listFiles();
if (listed.length > 0) {
for each (var item in listed) {
tempJson.children = fun(item, tempJson);
}
} else {
tempJson.children = {};
}
}
return tempJson;
}
Пример
Из структуры каталогов, например:
-root
--file1
--dir1
---file1.1
--dir2
Я быхотел бы получить JSON, как:
{
name: 'root',
type: 'dir',
children : [
{
name: 'file1',
type: 'file',
children: {}
},
{
name: 'dir1',
type: 'dir',
children:
{
name: 'file1.1',
type: 'file',
children: {},
}
},
name: 'dir2',
type: 'dir',
children: {}
}
Первый вызов: var object = new Object ();fun (rootdir, object);
Надеюсь, это имеет смысл. Спасибо!