Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Unable to parse the JSON data

rudra1
Tera Expert

Hi All,

Unable to parse the JSON data  which i am getting like as below: i want to map the highlighted ones. Please advice.

{
  "Incident" : {
    "properties(description)" : {
      "value" : "Service Account, Logic Monitor made an attempt to run commands remotely on ******S002 from *****789, using 1 PowerShell command. "
    },
    "properties(owner(userPrincipalName))" : {
      "value" : "example 123"
    },
    "properties(title)" : {
      "value" : "Remote code execution attempt"
    },

},

"HostEntity" : {
    "properties(hostName)" : {
      "value" : "8888S002, 9999S001"
    },
    "properties(additionalData(ShouldResolveIp))" : {
      "value" : "False, False, False, False, False"
    }

},

1 ACCEPTED SOLUTION

Try this code below

var str = {
   "Incident":{
      "properties(description)":{
         "value":"Service Account, Logic Monitor made an attempt to run commands remotely on ******S002 from *****789, using 1 PowerShell command. "
      },
      "properties(owner(userPrincipalName))":{
         "value":"example 123"
      },
      "properties(title)":{
         "value":"Remote code execution attempt"
      }
   },
   "HostEntity":{
      "properties(hostName)":{
         "value":"8888S002, 9999S001"
      },
      "properties(additionalData(ShouldResolveIp))":{
         "value":"False, False, False, False, False"
      }
   }
};

       
        var str2 = str.Incident;
        gs.print(JSON.stringify(str2["properties(description)"].value));//-- -- -- -- -- -- - > printing the value as Undefined

Thanks & Regards,
Vasanth

View solution in original post

13 REPLIES 13

So what script did you start and where are you stuck?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

I have storing the string data in variable str.

var str = 

{"Incident" : {"properties(description)" : {"value" : "Service Account, Logic Monitor made an attempt to run commands remotely on ******S002 from *****789, using 1 PowerShell command. "
    },
    "properties(owner(userPrincipalName))" : {
      "value" : "example 123"
    },
    "properties(title)" : {
      "value" : "Remote code execution attempt"
    },

},

"HostEntity" : {
    "properties(hostName)" : {
      "value" : "8888S002, 9999S001"
    },
    "properties(additionalData(ShouldResolveIp))" : {
      "value" : "False, False, False, False, False"
    }

},

var obj =JSON.parse(str);
gs.print(JSON.stringify(obj.Incident));
var str2 = obj.Incident;
gs.print(JSON.stringify(str2.properties(description))); ------------->printing the value as Undefined

Mahendra RC
Mega Sage

Hello Rudra,

Please check with below code once in your background script. I believe you are storing your data as JSON object only and no need to parse that:

(function () {
var str = {
	"Incident": {
		"properties(description)": {
			"value": "Service Account, Logic Monitor made an attempt to run commands remotely on ****, using 1 PowerShell command. "
		},
		"properties(owner(userPrincipalName))": {
			"value": ""
		},
		"properties(title)": {
			"value": "Remote code execution attempt"
		},
		"properties(owner(email))": {
			"value": ""
		},
		"properties(owner(assignedTo))": {
			"value": ""
		},
		"type": {
			"value": "Example123"
		},
		"properties(additionalData(bookmarksCount))": {
			"value": 0
		},
		"properties(incidentUrl)": {
			"value": "TestURL"
		},
		"properties(status)": {
			"value": "New"
		},
		"properties(lastModifiedTimeUtc)": {
			"value": "2022-**-** 05:46:54 UTC"
		},
		"properties(firstActivityTimeUtc)": {
			"value": "2022-**-** 15:30:27 UTC"
		},
		"properties(additionalData(alertsCount))": {
			"value": 1
		},
		"properties(additionalData(alertProductNames))": {
			"value": "Test 9876"
		},
		"properties(createdTimeUtc)": {
			"value": "2022-00-00 15:38:01 UTC"
		},
		"name": {
			"value": "*****-****-***-***-******"
		},
		"properties(severity)": {
			"value": "Medium"
		},
		"properties(additionalData(commentsCount))": {
			"value": 0
		},
		"properties(owner(objectId))": {
			"value": ""
		},
		"etag": {
			"value": "\"0000000000\""
		},
		"properties(lastActivityTimeUtc)": {
			"value": "2022-00-00 15:38:01 UTC"
		},
		"properties(incidentNumber)": {
			"value": 39
		},
		"properties(additionalData(tactics))": {
			"value": "Execution"
		},
		"properties(relatedAnalyticRuleIds)": {
			"value": "********"
		},
		"id": {
			"value": "Test Related Analytics"
		}
	},
	"HostEntity": {
		"properties(hostName)": {
			"value": "EUTest**, EUE***000"
		},
		"properties(additionalData(ShouldResolveIp))": {
			"value": "False, False, False, False, False"
		},
		"kind": {
			"value": "Test"
		},
		"properties(dnsDomain)": {
			"value": "Test Domain"
		},
		"properties(friendlyName)": {
			"value": "EUTest**, EUE***000"
		},
		"name": {
			"value": "7478"
		},
		"id": {
			"value": "478"
		},
		"type": {
			"value": "Test Value"
		}
	}
};
var IncidentData = str["Incident"]; // You get the Incident data
var HostData = str["HostEntity"];
gs.print(JSON.stringify(IncidentData));
gs.print(JSON.stringify(HostData));

var Description = IncidentData["properties(description)"]; // you get the properties(description) data
var PrincipalName = IncidentData["properties(owner(userPrincipalName))"];
gs.print(JSON.stringify(Description));
gs.print(JSON.stringify(PrincipalName));

var HostName = HostData["properties(hostName)"]; // you get the properties(description) data
var PrincipalName = HostData["properties(additionalData(ShouldResolveIp))"];
gs.print(JSON.stringify(HostName));
gs.print(JSON.stringify(PrincipalName));

})();

Please mark my respsone as helpful/correct, if it answer your question.

Thanks

Hello Rudra,

Just wanted to check with you, if the my above response answered your question. If yes, then please do close this thread/question by marking the appropriate response as correct.

If you still need any further help or guidance on this then please update those on this question.

Thanks