在JavaScript中解析ServiceNow返回的JSON并提取errno与num_keys字段值
提取ServiceNow REST响应中的errno和num_keys字段
你已经走对路啦——使用response.json()是直接把REST响应转换成JavaScript对象的最优方式,比手动解析字符串高效得多。下面是具体的实现步骤和代码示例:
1. 修正请求代码,获取JSON对象数组
把原来获取响应体字符串的代码换成response.json(),直接得到可操作的对象数组:
var request = new sn_ws.RESTMessageV2(); request.setEndpoint("url"); request.setHttpMethod('GET'); request.setRequestHeader('Content-Type','application/json'); request.setRequestHeader('X-IPM-Username','some name'); request.setRequestHeader('X-IPM-Password','some password'); var response = request.execute(); var jsonResponse = response.json(); // 直接转换为JS对象数组,无需手动解析
2. 遍历数组提取目标字段
你可以用forEach循环遍历数组中的每个对象,提取errno和num_keys的值,根据需求做后续处理(比如打印日志、存入变量或写入ServiceNow表):
示例1:打印每个字段值
// 遍历数组中的每个对象 jsonResponse.forEach(function(item) { var errNo = item.errno; var keyCount = item.num_keys; // 用gs.info输出到系统日志,方便调试 gs.info(`提取到的内容:errno=${errNo},num_keys=${keyCount}`); });
示例2:将提取结果存入新数组
如果需要把提取后的数据整理成新的结构保存,可以这样做:
var extractedData = []; jsonResponse.forEach(function(item) { extractedData.push({ errorNumber: item.errno, // 可以自定义字段名 keyCount: item.num_keys }); }); // 查看整理后的数组 gs.info(JSON.stringify(extractedData));
3. 增加异常判断(可选)
为了避免响应格式不符合预期导致报错,可以先判断返回的是否为数组:
if (Array.isArray(jsonResponse)) { // 执行上面的遍历逻辑 } else { gs.error('REST响应不是预期的数组格式,请检查接口返回内容'); }
如果你之前用的是response.getBody(),也可以手动解析字符串:
var result = response.getBody(); var jsonResponse = JSON.parse(result); // 后续遍历逻辑和上面一致
不过更推荐使用response.json(),它是ServiceNow REST API提供的便捷方法,代码更简洁且不易出错。
内容的提问来源于stack exchange,提问作者impika
相关产品推荐
相关产品推荐

