The CreatorCon Call for Content is officially open! Get started here.

How to fetch specific data from JSON object

MS17
Tera Contributor

Hello All,

 

I have a json data as below, I want to fetch data which has same "rota" value.

eg:

var group = '096fb59173062300e7af6238edf6a783'; 

var rota = new OnCallRotation();
var currentOnCall = rota.getEscalatees(group);
gs.print("oncall members"+JSON.stringify(currentOnCall));

 

The code returning the oncall members datails, I want to fetch the data which has "rota" : '349f399173062300e7af6238edf6a75e'.  If the rota value matched, I need all the data of matched rota like "memberId","memberIds","userId","userIds","roster" etc. Can anyone please help me with this.

 

Json Data:

[
{
"memberId": "119f399173062300e7af6238edf6a7e7",
"memberIds": [],
"userId": "62826bf03710200044e0bfc8bcbe5df1",
"userIds": [],
"roster": "9d9f399173062300e7af6238edf6a7e5",
"rota": "349f399173062300e7af6238edf6a75e",
"group": "096fb59173062300e7af6238edf6a783",
"escalationGroups": [],
"deviceId": "",
"deviceIds": [],
"isDevice": false,
"order": 1,
"isOverride": false,
"rotationScheduleId": "119f399173062300e7af6238edf6a7df",
"memberScheduleId": "9d9f399173062300e7af6238edf6a7ec"
},
{
"memberId": "7daf799173062300e7af6238edf6a7a2",
"memberIds": [],
"userId": "d2826bf03710200044e0bfc8bcbe5dc9",
"userIds": [],
"roster": "b5af799173062300e7af6238edf6a7a2",
"rota": "35af799173062300e7af6238edf6a79e",
"group": "096fb59173062300e7af6238edf6a783",
"escalationGroups": [],
"deviceId": "",
"deviceIds": [],
"isDevice": false,
"order": 1,
"isOverride": false,
"rotationScheduleId": "3daf799173062300e7af6238edf6a79e",
"memberScheduleId": "06af799173062300e7af6238edf6a7cd"
},
{
"memberId": "1d9f399173062300e7af6238edf6a7e8",
"memberIds": [],
"userId": "a8f98bb0eb32010045e1a5115206fe3a",
"userIds": [],
"roster": "9d9f399173062300e7af6238edf6a7e5",
"rota": "349f399173062300e7af6238edf6a75e",
"group": "096fb59173062300e7af6238edf6a783",
"escalationGroups": [],
"deviceId": "",
"deviceIds": [],
"isDevice": false,
"order": 2,
"isOverride": false,
"rotationScheduleId": "119f399173062300e7af6238edf6a7df",
"memberScheduleId": "d99f399173062300e7af6238edf6a7ef"
},

 

Thanks.
  

2 ACCEPTED SOLUTIONS

Peter Bodelier
Giga Sage

Hi @MS17,

 

You could use something like this, you may need to tweak your return object as per your needs.

var json = [
{
"memberId": "119f399173062300e7af6238edf6a7e7",
"memberIds": [],
"userId": "62826bf03710200044e0bfc8bcbe5df1",
"userIds": [],
"roster": "9d9f399173062300e7af6238edf6a7e5",
"rota": "349f399173062300e7af6238edf6a75e",
"group": "096fb59173062300e7af6238edf6a783",
"escalationGroups": [],
"deviceId": "",
"deviceIds": [],
"isDevice": false,
"order": 1,
"isOverride": false,
"rotationScheduleId": "119f399173062300e7af6238edf6a7df",
"memberScheduleId": "9d9f399173062300e7af6238edf6a7ec"
},
{
"memberId": "7daf799173062300e7af6238edf6a7a2",
"memberIds": [],
"userId": "d2826bf03710200044e0bfc8bcbe5dc9",
"userIds": [],
"roster": "b5af799173062300e7af6238edf6a7a2",
"rota": "35af799173062300e7af6238edf6a79e",
"group": "096fb59173062300e7af6238edf6a783",
"escalationGroups": [],
"deviceId": "",
"deviceIds": [],
"isDevice": false,
"order": 1,
"isOverride": false,
"rotationScheduleId": "3daf799173062300e7af6238edf6a79e",
"memberScheduleId": "06af799173062300e7af6238edf6a7cd"
},
{
"memberId": "1d9f399173062300e7af6238edf6a7e8",
"memberIds": [],
"userId": "a8f98bb0eb32010045e1a5115206fe3a",
"userIds": [],
"roster": "9d9f399173062300e7af6238edf6a7e5",
"rota": "349f399173062300e7af6238edf6a75e",
"group": "096fb59173062300e7af6238edf6a783",
"escalationGroups": [],
"deviceId": "",
"deviceIds": [],
"isDevice": false,
"order": 2,
"isOverride": false,
"rotationScheduleId": "119f399173062300e7af6238edf6a7df",
"memberScheduleId": "d99f399173062300e7af6238edf6a7ef"
}];

var values = getValues(json, '349f399173062300e7af6238edf6a75e');
gs.print(values);

function getValues(obj, rota) {
  var values = [];

  for (var i = 0; i < obj.length; i++) {
    if (obj[i].rota === rota) {
      values.push(obj[i].memberId);
      values.push(obj[i].memberIds);
      values.push(obj[i].userId);
      values.push(obj[i].userIds);
      values.push(obj[i].roster);
    }
  }
  return values;
}

 

 


Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

View solution in original post

Sure:

 

You could do that like this:

 

var group = '096fb59173062300e7af6238edf6a783';
var rota = new OnCallRotation();
var currentOnCall = rota.getEscalatees(group);
var json = JSON.stringify(currentOnCall);
var values = getValues(json, '349f399173062300e7af6238edf6a75e');
gs.print(values);

function getValues(obj, rota) {
var values = [];

for (var i = 0; i < obj.length; i++) {
if (obj[i].rota === rota) {
var curObj = {};
curObj.memberId = obj[i].memberId;
curObj.memberIds= obj[i].memberIds;
curObj.userId= obj[i].userId;
curObj.userIds= obj[i].userIds;
curObj.roster= obj[i].roster;
values.push(curObj);
}
}
return values;
}

Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

View solution in original post

11 REPLIES 11

Hi Peter,

Great!! It is working well! To print the values I have added this line "gs.print(JSON.stringify(values));"

Thank You.

Vaibhav127
Tera Guru

Hi @MS17 

Try the below code.

var objList;
var finalObj = [];
for (var i = 0; i < objList.length; i++) {
    if (objList[i].rota == rota value) {
var temp = {};
temp.memberId = obj[i].memberId;
temp.userId = obj[i].userId;
temp.roster = obj[i].roster;
finalObj.push(temp);
    }
  }