Find your people. Pick a challenge. Ship something real. The CreatorCon Hackathon is coming to the Community Pavilion for one epic night. Every skill level, every role welcome. Join us on May 5th and learn more here.

parse json array to get key value pair

Reshma77
Tera Contributor

Hello All,

I am trying to populate key-value pair from multi row variable set of incident table. With below code I am getting JSON array

var gr = new GlideRecord('incident');
gr.addQuery('number=INC0001164');
gr.query();
if (gr.next()) {
var mrvs = gr.variables.employee_details;
gs.print(mrvs);
}

*** Script: [ {
  "name" : "7db62c631b655150ded9eca8ab4bcb90",
  "number" : "007810",
  "manager" : "ABC",
  "cost" : "01394040"
} ]

If I try to parse the multi row variable set (var Payload = JSON.parse(mrvs); gs.print(Payload);) I am getting below result

Script: [object Object]

Can somebody help to get only key value pair from the JSON array. I am using this code in template script that needs to be populated on the ticket
The format should look like below

 

Name: ABC

Number: INC0001164
Manager: XYZ

Thanks,

1 ACCEPTED SOLUTION

Prasad Dhumal
Mega Sage

Hello Reshma,

Using the following code, you can iterate through the JSON array and print the key-value pairs:

var gr = new GlideRecord('incident');
gr.addQuery('number', 'INC0001164');
gr.query();
if (gr.next()) {
var mrvs = gr.variables.employee_details;
var Payload = JSON.parse(mrvs);
for (var i = 0; i < Payload.length; i++) {
var obj = Payload[i];
var keys = Object.keys(obj);
for (var j = 0; j < keys.length; j++) {
var key = keys[j];
if (key == "name") {
gs.print("Name: " + obj[key]);
}
if (key == "manager") {
gs.print("Manager: " + obj[key]);
}
}
}
}

View solution in original post

5 REPLIES 5

Chetan Mahajan
Mega Sage

Hi @Reshma77 ,

                          you can use below code for key-value pair. modify query according to your requirement

var obj = {};
var gr = new GlideRecord('incident');
gr.query();
if (gr.next()) {
    var vars = gr.variables.getValue();
    for (var i = 0; i < vars.size(); i++) {
        var row = vars.get(i);
        obj[row.name] = row.value;
    }
}
gs.print(JSON.stringify(obj));

Kindly mark correct and helpful if applicable