- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2022 07:26 AM
I have an outbound REST message that returns a JSON response.
Outbound REST message:
var getAccount = new sn_ws.RESTMessageV2('TestMessage', 'Accounts');
getAccount.setStringParameterNoEscape("authorization", accessToken);
var response = getAccount.execute();
var responseBody = response.getBody();
gs.info("responseBody : " + responseBody);
Here is responseBody of the outbound REST message:
{
"@odata.context":"this is a test",
"value":[
{
"test_value_1":"test1",
"test_value_2":"test2"
},
{
"test_value_1":"test3",
"test_value_2":"test4"
},
{
"test_value_1":"test5",
"test_value_2":"test6"
}
]
}
I need to parse this JSON response and get test_value_1 and test_value_2 for each object. How can I do this? I am thinking a for loop of some kind, but I cant figure out how to configure it.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2022 07:57 AM
Considering you are receiving valid JSON response here is the script
Script:
var json = '{"@odata.context":"this is a test","value":[{"test_value_1":"test1","test_value_2":"test2"},{"test_value_1":"test3","test_value_2":"test4"},{"test_value_1":"test5","test_value_2":"test6"}]}';
var parser = JSON.parse(json);
var testValue1Arr = [];
var testValue2Arr = [];
for(var i=0;i<parser.value.length;i++){
testValue1Arr.push(parser.value[i].test_value_1+'');
testValue2Arr.push(parser.value[i].test_value_2+'');
}
gs.info("Test value1 array->" + testValue1Arr.toString());
gs.info("Test value2 array->" + testValue2Arr.toString());
Output:
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2022 07:51 AM
Hello,
if responseBody.value is an Array, you can do something like:
var values = responseBody.value;
var val1 = [];
var val2 = [];
for(var i = 0; i < values.length; i++){
val1.push(values[i].test_value_1);
val2.push(values[i].test_value_2);
}
With this you will have val1 and val2 arrays containing the test_value_1 and test_value_2 values.
If this answer is relevant for you, please mark it as correct/helpful.
Thanks,
Filipe

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2022 07:52 AM
Just a note: from the example you posted, value array does not have the ending ].
Was this a typo?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2022 08:44 AM
Yes it was a typo.
I tried your method and I'm getting undefined values:
var getAccount = new sn_ws.RESTMessageV2('TestMessage', 'Accounts');
getAccount.setStringParameterNoEscape("authorization", accessToken);
var response = getAccount.execute();
var responseBody = response.getBody();
gs.info("responseBody : " + responseBody);
var values = responseBody.value;
gs.info("values: "+values);
var val1 = [];
var val2 = [];
for (var i = 0; i < values.length; i++) {
val1.push(values[i].test_value_1);
val2.push(values[i].test_value_2);
}
gs.info("val1: "+values);
gs.info("val2: "+values);
Output in the logs:
values: undefined
val1: undefined
val2: undefined
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
03-28-2022 07:57 AM
Considering you are receiving valid JSON response here is the script
Script:
var json = '{"@odata.context":"this is a test","value":[{"test_value_1":"test1","test_value_2":"test2"},{"test_value_1":"test3","test_value_2":"test4"},{"test_value_1":"test5","test_value_2":"test6"}]}';
var parser = JSON.parse(json);
var testValue1Arr = [];
var testValue2Arr = [];
for(var i=0;i<parser.value.length;i++){
testValue1Arr.push(parser.value[i].test_value_1+'');
testValue2Arr.push(parser.value[i].test_value_2+'');
}
gs.info("Test value1 array->" + testValue1Arr.toString());
gs.info("Test value2 array->" + testValue2Arr.toString());
Output:
Regards
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader