Get rows from the transform and print to a JSON string

Evren Yamin
Tera Contributor

Hello,

 

I currently have a transform map that I used to load data in ServiceNow.  I now have a requirement get the rows of the loaded data and convert into a JSON string so I can store that into a field in ServiceNow.

 

This is the sample data:

numbershort descriptionstatecreated
INC1089756sample recordnew4/24/2024

 

I want to convert this to a JSON string that looks like this one:

{number: "INC1089756", short_description: "sample record", state: "state", created: "4/24/2024"}

 

And save the JSON string to a new field. Is this possible? 

 

Appreciate all the help.

 

 

1 ACCEPTED SOLUTION

Community Alums
Not applicable

Hi @Evren Yamin ,

A small little change here please make it OnAfter Script instead of onComplete script

SarthakKashya2_2-1713948002526.png

 

Result 

SarthakKashya2_3-1713948038458.png

 

Please mark my answer correct and helpful if this works for you

 

Thanks and Regards 

Sarthak

 

View solution in original post

10 REPLIES 10

You can use this script in the transform script or business rule.

 

This script is generic for all the fields. If you want to ignore the system fields, put an if condition.

 

Example:

var gr = new GlideRecord("incident");
gr.query('number', 'INC0000060');
gr.next();
var recordString = "";
var gRU = new GlideRecordUtil();
var fieldList = gRU.getFields(gr);
gs.info(fieldList);
fieldList.forEach(function(field) {
    recordString += field + ": " + gr.getValue(field) + "\n";
});
gs.info(recordString);

Community Alums
Not applicable

Hi @Evren Yamin ,

I tried your problem in my PDI and it works for me.

Please create onComplete transform map script and add below code 

 

(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {

	gs.log('Incide ON Complete script = ' + source.u_number);
    var JsonData = {
        number: source.getValue('u_number'),
        short_description: source.getValue('u_short_description')
    };

    var jsonToString = JSON.stringify(JsonData);
	gs.log("jsonToString = " + jsonToString);

    target.description = jsonToString; 
	target.update();

})(source, map, log, target);

 

Image for reference 

SarthakKashya2_0-1713947436467.png

Result 

SarthakKashya2_1-1713947472213.png

 

Please mark my answer correct and helpful if this works for you

 

Thanks and Regards 

Sarthak

Community Alums
Not applicable

Hi @Evren Yamin ,

A small little change here please make it OnAfter Script instead of onComplete script

SarthakKashya2_2-1713948002526.png

 

Result 

SarthakKashya2_3-1713948038458.png

 

Please mark my answer correct and helpful if this works for you

 

Thanks and Regards 

Sarthak

 

Hello @Community Alums, I am now able to do this. Thanks so much for your help 🙂

@Community Alums Good Effort 👏