How to get the value of repository id and Name from the source data field by using array?

jugantanayak
Tera Guru

Hi,

How to get the value of repository id and Name from the source data field by using array?

source data: {"assetexposurescore":"497","repository":"{\"id\" : \"36\", \"name\" : \"(01) - Health Services - ActiveScan\", \"description\" : \"Health Services - ActiveScan\", \"dataFormat\" : \"IPv4\"}","score":"40","acrscore":"4.0",

2 ACCEPTED SOLUTIONS

Hi @jugantanayak 

 

As it contains escape characters so we need to first remove the escape characters.

Refer the below Steps : 

 

// 1.Store result in variable , Just for simplicity I have taken only some data from your JSON object
var result = {"assetexposurescore":"497","repository":"{\"id\" : \"36\", \"name\" : \"(01) - Health Services - ActiveScan\", \"description\" : \"Health Services - ActiveScan\", \"dataFormat\" : \"IPv4\"}"}

// 2. Stringyfy the result so that we can remove escape characters
var stResult = JSON.stringify(result);

// 3. replace the escape characters
var newResult = stResult.replace( /\'\'/g,'');

// 4. convert it into object again
var parser = JSON.parse(newResult);

// 5. get the repository object form newly created object
var repository = parser.repository;

//gs.info('repostory=' + repository);
// 6. Create new JSON objectas repository contains string

var newObj = {

    repoData : {},

}

// 7. add parsed repository into new JSON
newObj.repoData = JSON.parse(repository);

// 8. get the values by dot walking

gs.info("Id = " + newObj.repoData.id);
gs.info("name = " + newObj.repoData.name);

 

 

Output : 

 

VishalBirajdar_0-1695699571048.png

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

View solution in original post

Hi @Vishal Birajdar ,

 

Issue has been resolved, I am sharing my updated fix script.

And Thank you so much for all your help, which really helps me a lot.

var res = new GlideRecord('sn_sec_cmn_src_ci');
res.addQuery("source","57fd7e2353b300100ac3ddeeff7b1233");
res.addNotNullQuery("source_data");
res.setLimit(3);
res.query();
while(res.next()){
var result =res.getValue('source_data');
var newResult = result.replace( /\'\'/g,'');
var parser = JSON.parse(newResult);
var repository = parser.repository;
var newObj = {};
newObj = JSON.parse(repository);
var idRepo =newObj.id;
var nameRepo = newObj.name;
res.u_repository_id=idRepo;
res.u_repository_name=nameRepo;
res.update();

}

View solution in original post

21 REPLIES 21

Vishal Birajdar
Giga Sage

Hi @jugantanayak 

 

Did not get , do you want to get repository id and name from JSON object that mentioned...??

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Hi @Vishal Birajdar ,

 

Thanks for your reply.

Yes, requirement is to fetch the repository id and name by using array script.

source data:

"repository":"{\"id\" : \"36\", \"name\" : \"(01) - Health Services - ActiveScan\"

 

Regards,

Juganta

Hi @jugantanayak 

 

As it contains escape characters so we need to first remove the escape characters.

Refer the below Steps : 

 

// 1.Store result in variable , Just for simplicity I have taken only some data from your JSON object
var result = {"assetexposurescore":"497","repository":"{\"id\" : \"36\", \"name\" : \"(01) - Health Services - ActiveScan\", \"description\" : \"Health Services - ActiveScan\", \"dataFormat\" : \"IPv4\"}"}

// 2. Stringyfy the result so that we can remove escape characters
var stResult = JSON.stringify(result);

// 3. replace the escape characters
var newResult = stResult.replace( /\'\'/g,'');

// 4. convert it into object again
var parser = JSON.parse(newResult);

// 5. get the repository object form newly created object
var repository = parser.repository;

//gs.info('repostory=' + repository);
// 6. Create new JSON objectas repository contains string

var newObj = {

    repoData : {},

}

// 7. add parsed repository into new JSON
newObj.repoData = JSON.parse(repository);

// 8. get the values by dot walking

gs.info("Id = " + newObj.repoData.id);
gs.info("name = " + newObj.repoData.name);

 

 

Output : 

 

VishalBirajdar_0-1695699571048.png

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Hi @Vishal Birajdar ,

This code is working.

And thank you so much for explain it in detail, which helps me to understand the code.

Regards,

Juganta