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));
	}
}