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

In rest message getting {"detail":"JSON parse error - Invalid \\escape: line 11 column 31 (char 359)\nPossible cause: trailing comma."}

Sowmya20
Tera Contributor

Hi,

I am getting {"detail":"JSON parse error - Invalid \\escape: line 11 column 31 (char 359)\nPossible cause: trailing comma."}

error while passing value in rest message.

find_real_file.png

Workflow script:

var i = new GlideAggregate('sys_user');
var m = '';
var x = mr();
var j = '';


var x = current.variable_pool.select_users_groups.getDisplayValue();
if (x == 'Group') {
j = current.variables.please_enter_the_dl_group_name.u_cn.getDisplayValue();

} else {
j = names();
}

function names() {
var j = [];
var i = new GlideRecord('sys_user');
i.addQuery('sys_id', 'IN', current.variables.username);
i.query();
while (i.next()) {
j.push(i.email.toString());
}
return j;
}

function mr() {
var mrv;
var itemID = current.sys_id;
var ritmGR = new GlideRecord('sc_req_item');
if (ritmGR.get(itemID)) {
mrv = ritmGR.variables.path;
// gs.addInfoMessage("a=" + mrv);
}
m = mrv.path_1;

}

 

var gr = new GlideRecord('sc_task');
gr.addEncodedQuery('short_descriptionSTARTSWITHNeed access to storage' +'^parent=' + current.sys_id);
gr.query();
if (gr.next()) {
var number = gr.number;
}

var instanceURL = gs.getProperty('glide.servlet.uri');
var callbackUrl = instanceURL + 'api/now/table/sc_task/' + gr.sys_id;
try {
var r = new sn_ws.RESTMessageV2('Ansible-NetworkShareAccess', 'NetworkShareAccess');
r.setStringParameterNoEscape('callbackUrl', callbackUrl);
r.setStringParameterNoEscape('ticketNumber',number);
r.setStringParameterNoEscape('sysId', gr.sys_id);
r.setStringParameterNoEscape('sn_sharePaths', m); // here getting error
r.setStringParameterNoEscape('sn_principalType', current.variable_pool.select_users_groups.getDisplayValue());
r.setStringParameterNoEscape('sn_principal', j);
r.setStringParameterNoEscape('sn_permissionType', current.variable_pool.please_select_the_type_of_access.getDisplayValue());

var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
} catch (ex) {
var message = ex.message;
}

Like this I'm submitting value

find_real_file.png

Thanks,

Sowmya

17 REPLIES 17

Please provide example code i'm new to this.

Thanks,

Sowmya

Try either:

r.setStringParameterNoEscape('sn_sharePaths', m.replace(/\\/g,'\\\\')); // here getting error

or

r.setStringParameterNoEscape('sn_sharePaths', JSON.stringify(m)); // here getting error

You'll likely want to go with m.replace() if you have square brackets in your value before it gets sent.

For 1st one

find_real_file.png find_real_file.png

Second,

find_real_file.pngfind_real_file.png

Please check

Verify that `m` is still being set to your path and that it's a string and not a GlideElement.

var i = new GlideAggregate('sys_user');
var m = '';
var x = mr();
var j = '';


var x = current.variable_pool.select_users_groups.getDisplayValue();
if (x == 'Group') {
j = current.variables.please_enter_the_dl_group_name.u_cn.getDisplayValue();

} else {
j = names();
// gs.log("sahilK"+j);
}

function names() {
var j = [];
var i = new GlideRecord('sys_user');
i.addQuery('sys_id', 'IN', current.variables.username);
i.query();
while (i.next()) {
j.push(i.email.toString());
}
return j;
}

function mr() {
var mrv;
var itemID = current.sys_id;
var ritmGR = new GlideRecord('sc_req_item');
if (ritmGR.get(itemID)) {
mrv = ritmGR.variables.path;

}
m = mrv.path_1;
}

 

var gr = new GlideRecord('sc_task');
gr.addEncodedQuery('short_descriptionSTARTSWITHNeed access to storage' +'^parent=' + current.sys_id);
gr.query();
if (gr.next()) {
var number = gr.number;
}

var instanceURL = gs.getProperty('glide.servlet.uri');
var callbackUrl = instanceURL + 'api/now/table/sc_task/' + gr.sys_id;
try {
var r = new sn_ws.RESTMessageV2('Ansible-NetworkShareAccess', 'NetworkShareAccess');
r.setStringParameterNoEscape('callbackUrl', callbackUrl);
r.setStringParameterNoEscape('ticketNumber',number);
r.setStringParameterNoEscape('sysId', gr.sys_id);
r.setStringParameterNoEscape('sn_sharePaths', m.replace(/\\/g,'\\\\'));
r.setStringParameterNoEscape('sn_principalType', current.variable_pool.select_users_groups.getDisplayValue());
r.setStringParameterNoEscape('sn_principal', j);
r.setStringParameterNoEscape('sn_permissionType', current.variable_pool.please_select_the_type_of_access.getDisplayValue());

var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
} catch (ex) {
var message = ex.message;
}