logo

NJP

ServiceNow: retrieve a JSON Array element by its KEY value

Import · May 27, 2022 · article

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 )

View original source

http://www.cloudminus89.com/2022/05/servicenow-retrieve-json-array-element.html