首页 > 解决方案 > 将 SQL 查询添加到 JSON 有效负载

问题描述

我需要以 JSON 格式将 SQL 查询发送到 REST API,它适用于简单查询,但我正在尝试将 WHERE 子句与 IN 运算符一起使用。如果我对值进行硬编码,它可以在 Postman 中工作,但是当我将 Input 数组传递给 IN 运算符时,它似乎没有按预期工作。

var servers = ['Server-1','Server-2'];
var requestBody = {};
requestBody.Script = 'SELECT ID, NAME, FQDN FROM SERVER WHERE Name IN ('+servers+')';
gs.log("Advanced Request3 Body: "+JSON.stringify(requestBody));

这是输出:

{"Script":"SELECT ID, NAME, FQDN FROM SERVER WHERE Name IN (Server-1,Server-2)"}

这是预期的输出:如果传递数组有任何问题,任何人都可以提供帮助。

{"Script":"SELECT ID, NAME, FQDN FROM SERVER WHERE Name IN ('Server-1','Server-2')"}

标签: javascriptjsonrest

解决方案


您可以使用以下命令转义数组中每个元素的单引号Array.map

var serversEscaped = servers.map(function(el) { return '\'' + el + '\''; });

然后用Array.join逗号生成一个字符串:

var query = serversEscaped.join(', ');

这是您的整个代码的样子:

var servers = ['Server-1','Server-2'];
var requestBody = {};
var serversEscaped = servers.map(function(el) { return '\'' + el + '\''; });
var query = serversEscaped.join(', ');

requestBody.Script = 'SELECT ID, NAME, FQDN FROM SERVER WHERE Name IN ('+ query +');'
console.log(JSON.stringify(requestBody));

推荐阅读