我正在使用 javascript SDK 查询 Splunk。在 searchParams 中,我将输出模式指定为“json_rows”。
var searchParams = {
exec_mode: "normal",
output_mode: "json_rows"
};
但是当我获得输出时,我仍然没有以 JSON 格式获得它。输出以数组形式出现。
知道出了什么问题吗?我尝试了“json_cols”,也只尝试了“json”。结果相同。
提前致谢。
编辑:2
更多代码
var service = new splunkjs.Service({
username:"xxx",
password:"xxxx",
scheme:"https",
host:"xxxxxx.com",
port:"5500",
version:"5.0"
});
var searchQuery = 'search index=sn impact=1 OR impact=2 | eval time = round( strptime(impact_start,"%Y-%m-%d %H:%M:%S"), 0 )| where time >= ' + 14334627 + ' AND time<=' + 14568862 + '| bucket time span=1d | stats values(number) as incident_name by time';
var searchParams = {
exec_mode: "normal",
output_mode: "JSON"
};
service.oneshotSearch(
searchQuery,
searchParams,
function(err, results) {
if ( results ) {
var incidentResp = {};
incidentResp["data"] = results.rows;
incidentResp["error"] = null;
callback(null, incidentResp);
return;
}
else {
var errResp = {};
errResp["data"] = null;
errResp["error"] =err;
callback(null, errResp);
return;
}
}
);
最佳答案
我不是 100% 确定您在问什么,但让我尽力提供帮助。
output_mode 只是告诉 REST API 如何序列化并返回结果,通常是 JSON、XML 或 CSV
假设您使用 JavaScript SDK 将数据提取到应用程序中,但实际上并未将结果写入文件,我将保持原样(JSON 默认值)
您将在响应的“结果”中找到实际数据。
例如。
service.oneshotSearch( query, params,
function(err, response) {
if (err) throw new Error ( err );
console.log( response.results );
});
尝试更改此行:
incidentResp["data"] = results.rows;:
对此:
incidentResp["data"] = results.results;
...但是,是的,这将是一个结果数组。
希望这有帮助
关于javascript - 数据不是来自 Splunk Javascript sdk 的 JSON 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39865672/