json - то что спарсили из строки
Сначала группируем данные, потом из них делаем объекты
var schools = json.reduce(function(r, item) {
var school = r.map[item.type];
if (!school) {
school = r.map[item.type] = {
id: item.type,
classes: [{
id: '',
studs: []
}]
};
r.arr.push(school);
}
var cls = school.classes[0];
cls.studs.push(item);
return r;
}, { arr: [], map: Object.create(null) }).arr.map(function (school, idx) {
return new School(idx + 1, school.id, school.classes.map(function (cls, idx) {
return new Class(idx + 1, cls.id, cls.studs.map(function (stud, idx) {
return new Student(idx + 1, stud.title, stud.id);
}));
}));
});