2016-10-05 85 views
1

我使用javascript SDK查询Splunk。在searchParams中,我给出了输出模式为“json_rows”。未从Splunk获取JSON格式的数据Javascript sdk

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; 
     } 

    } 
); 
+1

你能展示更多的代码吗? – Shakeel

回答

0

我不是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; 

...但是,是的,这将是结果的数组。

希望这可以帮助