1
我有一個文件夾/文件系統的自定義類,其中文件夾可以有文件夾或文件的孩子。文件不能有孩子。當我添加文件夾和文件時,我想保存該結構以便能夠恢復它。現在我將結構存儲爲JSON字符串,而我的問題是如何將其解析回自定義類。將JSON解析爲自定義的「樹狀」文件結構
JSON字符串可能看起來像:
{
"name": "Root",
"type": "Folder",
"img": null,
"checked": false,
"children": [
{
"name": "Folder1",
"type": "Folder",
"img": "img/folder.png",
"checked": false,
"children": [
]
},
{
"name": "Desert.jpg",
"type": "image/jpeg",
"img": "img/file.png",
"checked": false,
"data": {
"lastModifiedDate": "2009-07-14T05:32:31.000Z",
"size": 845941
}
}
]
}
凡與type ==='Folder'
孩子是我的自定義文件夾類和type !== 'Folder'
是我的自定義文件類的一個對象。
我應該如何解析這個JSON能夠創建新的自定義對象並將它們存儲在我的文件結構中? 我試圖做到這一點,但我卡在第一級。我認爲我應該做的遞歸不是很好。 到目前爲止我的代碼,當有根你需要使用遞歸僅將文件/文件夾和子文件夾沒有/子文件
function importJson(json){
var jsonObj = JSON.parse(json);
//This line needs to be fixed when/if recursion?
var currentFolder = rootFolder; //a global variable which is my rootFolder
for(var i = 0, obj = jsonObj.children; i < obj.length; i++){
if(obj[i].type === 'Folder'){
var folder = new Folder(obj[i].name, 'Folder');
folder.img = obj[i].img;
currentFolder.add(folder);
console.log('A folder, check for children?');
}
else{
var file = new File(obj[i].name, obj[i].type);
file.data = obj[i].data;
file.img = obj[i].img;
currentFolder.add(file);
console.log('a file');
}
}
}
謝謝,這比預期的更簡單。必須改變我的當前文件夾,以便一切都不會被添加到根。 – jdahlgren