2016-10-05 3 views
1

Я запрашиваю Splunk с помощью javascript SDK. В searchParams я задал выходной режим как «json_rows».Данные не поступают в формате JSON от Splunk Javascript sdk

var searchParams = { 
    exec_mode: "normal", 
    output_mode: "json_rows" 
}; 

Но все же, когда я получаю вывод, я не получаю его в формате JSON. Выход поступает как массив.

Любая идея, что происходит не так? Я попробовал «json_cols» и только «json». Тот же результат.

Заранее спасибо.

Edit: 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; 

... но да, это будет массив результатов.

Надеюсь, это поможет

Смежные вопросы