ServiceNow: retrieve a JSON Array element by its KEY value
in this example, we wish to retrieve the blue highlighted key value from the JSON array tagsOfAffectedEntities:
{ "ProblemDetailsJSON" : { "id" : "xxxx", "startTime" : 1652690280000, "endTime" : 1652690280000, "displayName" : "yyyy", "impactLevel" : "INFRASTRUCTURE", "status" : "CLOSED", "severityLevel" : "RESOURCE_CONTENTION", "commentCount" : 3,
"tagsOfAffectedEntities" : [ {
"context" : "CONTEXTLESS", "key" : "Application" }, { "context" : "CONTEXTLESS",
"key" : "SZCOFF",
"value" : "SZCOFF12345" }, { "context" : "CONTEXTLESS", "key" : "K8s container xxx", "value" : "xxxx" }, { "context" : "CONTEXTLESS", "key" : "[Kubernetes]namespace", "value" : "xxx" }, { "context" : "CONTEXTLESS", "key" : "Environment", "value" : "xxx" }, { "context" : "CONTEXTLESS", "key" : "NS", "value" : "xxx" }, { "context" : "CONTEXTLESS", "key" : "Tier" }, { "context" : "CONTEXTLESS", "key" : "Department", "value" : "xxx" } ], "ProblemID" : "xxx", "ProblemImpact" : "xxx", "ProblemSeverity" : "xxx", "ProblemTitle" : "xxx", "ProblemURL" : "https://xxxx.live.dynatrace.com/#problems/problemdetails;pid=-xxx", "State" : "RESOLVED", "Tags" : "xxx", "correlation_id" : "xxx", "name" : "xxx"
}
use this script:
var sPayload=JSON.parse (< above_payload>); //(assume it's stored in a ServiceNow table field such as em_alert.additional_info)
example:
var grAlert=new GlideRecord('em_alert');if (grAlert.get('number', 'Alert0017xxx')){
var sPayload=JSON.parse (grAlert.additional_info);
var svc=_getSvcoffNumber(
function
_getSvcoffNumber(additionalInfo) { var sReturn = ''; try {
var tagsOfAffectedEntities = additionalInfo.ProblemDetailsJSON.tagsOfAffectedEntities;
sReturn=_extractTags(tagsOfAffectedEntities, "SZCOFF"); } catch (ex) { } return sReturn;
}
function extractTags (pTagObject, pTag) { var vTag; try { for (i = 0; i < pTagObject.length; i++) { if (pTagObject[i]['key'] == pTag) { vTag = pTagObject[i]['value'].toString(); } } } catch (ex) { } return vTag;
}
---OUTPUT:
*** Script: SZCOFF12345
(ServiceNow )
http://www.cloudminus89.com/2022/05/servicenow-retrieve-json-array-element.html