MS Project JSON
by Morten Punnerud Engelstad
JavaScript
var Project = {
"Tasks":{
"Task":[
{
"UID":"0",
"ID":"0",
"Name":"Name for task1"
},
{
"UID":"30",
"ID":"1",
"Name":"Name for task2"
},
{
"UID":"32",
"ID":"2",
"Name":"Name for task3"
}]
},
"Resources":{
"Resource":[
{
"UID":"2",
"ID":"1",
"Name":"Bill"
},
{
"UID":"3",
"ID":"2",
"Name":"George"
}]
},
"Assignments":{
"Assignment":[
{
"UID":"1",
"TaskUID":"0",
"ResourceUID":"-65535",
"PercentWorkComplete": "0"
},
{
"UID":"2",
"TaskUID":"30",
"ResourceUID":"2",
"PercentWorkComplete":"20"
},
{
"UID":"3",
"TaskUID":"30",
"ResourceUID":"3",
"PercentWorkComplete":"20"
}
]
}
}
var obj = {};
//Walk all the tasks
for(i=0;i<Project.Tasks.Task.length;i++){
obj[i] = {"UID":Project.Tasks.Task[i].UID};
//Find assignments to tasks
for(j=0;j<Project.Assignments.Assignment.length;j++){
if(Project.Tasks.Task[i].UID === Project.Assignments.Assignment[j].TaskUID) {
//create object before you can push to it
obj[i]["Assigned"] = [];
//Add ResourceUID as odd number in array
obj[i]["Assigned"].push(Project.Assignments.Assignment[j].ResourceUID);
//Find ressource to ResourceUID and add to array as even number
for(k=0;k<Project.Resources.Resource.length;k++){
if(Project.Assignments.Assignment[j].ResourceUID === Project.Resources.Resource[k].UID){
obj[i]["Assigned"].push(Project.Resources.Resource[k].Name);
}
}
}
}
//print JSON object when the whole Tasks array is walked
if (i == (Project.Tasks.Task.length-1)){
document.write(JSON.stringify(obj));
}
}