폴더가 폴더 또는 파일의 하위 항목을 가질 수있는 사용자 지정 클래스의 폴더/파일 시스템이 있습니다. 파일은 하위 항목을 가질 수 없습니다. 폴더와 파일을 추가하면 복원 할 수 있도록 구조를 저장하고 싶습니다. 지금 JSON 문자열로 구조를 저장하고 내 문제는 사용자 지정 클래스로 다시 구문 분석하는 방법입니다.사용자 지정 'tree-like'파일 구조로 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 문자열을 볼 수 있었다.
이 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');
}
}
}
감사합니다. 예상보다 간단했습니다. 모든 것을 루트에 추가하지 않도록 currentFolder를 변경해야했습니다. – jdahlgren