The CreatorCon Call for Content is officially open! Get started here.

how to pass the records in json?

caffry
Kilo Guru

i used the below script where it pass the data in an aray,i need to push to an json array.

(function executeRule(current, previous /*null when async*/) {

try { 
	var r = new sn_ws.RESTMessageV2('direct_rest_transaction', 'direct_rest_transa');
	
	
var fields = current.getFields();
	var hits = [];
	var name=[];
	var field=[];
	var sysid=current.sys_id;

		for (var i = 0; i < fields.size(); i++) {
			var glideElement = fields.get(i);
			if (glideElement.hasValue()) {
				name.push(glideElement);
				field.push(glideElement.getName());
				hits.push(glideElement.getName() + ":" + glideElement);
		}

	}
	hits.push("sys_id:" +sysid);
	r.setStringParameterNoEscape("pay",hits);
	 r.setStringParameterNoEscape('name', name);
 r.setStringParameterNoEscape('fields', field);
	//r.setStringParameterNoEscape('type',1);

 var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();

}
catch(ex) {
 var message = ex.message;
}

	

})(current, previous);
13 REPLIES 13

I tried with that too its returning empty object

(function executeRule(current, previous /*null when async*/) {

try { 
	var r = new sn_ws.RESTMessageV2('direct_rest_transaction', 'direct_rest_transa');
	
	
var fields = current.getFields();
	var hits = {};
	var name={};
	var field={};
	var sysid=current.sys_id;

		for (var i = 0; i < fields.size(); i++) {
			var glideElement = fields.get(i);
			if (glideElement.hasValue()) {
				name.push(glideElement);
				field.push(glideElement.getName());
				hits.push(glideElement.getName() + ":" + glideElement);
		}

	}
	hits.push("sys_id:" +sysid);
	//var json=JSON.stringify(hits);
	var parser = new JSON();
var str = parser.encode(hits);
	gs.log(str,"soze");
	r.setStringParameterNoEscape("pay",hits);
	 r.setStringParameterNoEscape('name', name);
 r.setStringParameterNoEscape('fields', field);
	//r.setStringParameterNoEscape('type',1);

 var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();

}
catch(ex) {
 var message = ex.message;
}

	

})(current, previous);

HI,

While putting values into hits you should put like this:

var hits = {};

hits.sys_id = 'sys_id;

 

And then after stringifying it you can access value.

 

var parser = new JSONParser();

var parsedData = parser.parse(hits);

gs.print("Var1 is:"+parsedData.sys_id);

 

Thanks,
Ashutosh

Prins Kumar Gup
Giga Guru

Please see the below code it's working fine for me:

 

(function executeRule(current, previous /*null when async*/) {

// Add your code here
try {
var sd = current.short_description.toString();
var des = current.description.toString();
var cat = current.category.toString();
var ci = current.cmdb_ci.toString();
var cal = current.caller_id.toString();
var num = current.number.toString();
var r = new sn_ws.RESTMessageV2('Instance Integration', 'Post');
var req_body = {'short_description':sd, 'description':des, 'category':cat, 'cmdb_ci':ci, 'caller_id':cal/*, 'number':num*/};
var body = JSON.stringify(req_body);
r.setRequestBody(body);
var response = r.execute();
var responseBody = response.getBody();
gs.addInfoMessage(responseBody);
var httpStatus = response.getStatusCode();
gs.addInfoMessage(httpStatus);
}
catch(ex) {
var message = ex.message;
}

})(current, previous);

 

Please mark helpful/Correct Answer if you got your answer

 

Thanks

PKG

u have manually inserted the records i think that might work but i m getting those values from getFields(), its not storing in my json

 

(function executeRule(current, previous /*null when async*/) {

try { 
	var r = new sn_ws.RESTMessageV2('direct_rest_transaction', 'direct_rest_transa');
	
	
var fields = current.getFields();
	var hits = {};
	var name={};
	var field={};
	var sysid=current.sys_id;

		for (var i = 0; i < fields.size(); i++) {
			var glideElement = fields.get(i);
			if (glideElement.hasValue()) {
				name.push(glideElement);
				field.push(glideElement.getName());
				hits.push(glideElement.getName() + ":" + glideElement);
		}

	}
	hits.push("sys_id:" +sysid);
	//var json=JSON.stringify(hits);
	var parser = new JSON();
var str = parser.encode(hits);
	gs.log(str,"soze");
	r.setStringParameterNoEscape("pay",hits);
	 r.setStringParameterNoEscape('name', name);
 r.setStringParameterNoEscape('fields', field);
	//r.setStringParameterNoEscape('type',1);

 var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();

}
catch(ex) {
 var message = ex.message;
}

	

})(current, previous);

Yes, Okay I'll try to solve your issue