Это перевод страницы документации с английского языка. Помогите нам сделать его лучше.

5 Предобработка CSV в JSON

Обзор

В этом шаге предварительной обработки имеется возможность преобразования данных CSV файла в JSON формат. Поддерживается в:

  • элементах данных (прототипах элементов данных)
  • правилах низкоуровневого обнаружения

Настройка

Для настройки шага предварительной обработки CSV в JSON:

Первый параметр позволяет задать пользовательский разделитель. Обратите внимание, если первая строка входящих данных CSV начинается с "Sep=" и затем следует один UTF-8 символ, тогда этот символ будет использоваться в качестве разделителя в случае, если первый параметр не задан. Если первый параметр не задан и разделитель не извлекается из строки "Sep=", то будет в качестве разделителя будет использоваться запятая.

Второй опциональный параметр позволяет задать символ цитирования.

Если выбрана опция Со строкой заголовка, значения строки заголовка будут интерпретированы как имена столбцов (смотрите Обработка заголовка для получения более подробной информации).

Если выбрана опция Другое при ошибке, элемент данных не станет неподдерживаемым в случае ошибки на шаге предварительной обработки. Кроме того, можно задать пользовательскую обработку ошибок: отбросить значение, задать нужное значение или задать нужное сообщение об ошибке.

Обработка заголовка

Строка заголовка CSV файла может быть обработана двумя разными способами:

  • Если опция Со строкой заголовка выбрана - значения строки заголовка интепретируются как имена столбцов. В этом случае имена столбцов должны быть уникальны и строки с данными не должны содержать больше столбцов, чем строка заголовка;
  • Если опция Со строкой заголовка не выбрана - строка заголовка интерпретируется как данные. Имена колонок генерируются автоматически (1,2,3,4...)

Пример CSV файла:

Nr,Item name,Key,Qty
       1,active agent item,agent.hostname,33
       "2","passive agent item","agent.version","44"
       3,"active,passive agent items",agent.ping,55

Знак цитирования внутри заключенного в кавычки поля во входящих данных должен быть экранирован при помощи другого символа цитирования.

Обработка строки заголовка

Вывод JSON, когда ожидается строка заголовка:

[
          {
             "Nr":"1",
             "Item name":"active agent item",
             "Key":"agent.hostname",
             "Qty":"33"
          },
          {
             "Nr":"2",
             "Item name":"passive agent item",
             "Key":"agent.version",
             "Qty":"44"
          },
          {
             "Nr":"3",
             "Item name":"active,passive agent items",
             "Key":"agent.ping",
             "Qty":"55"
          }
       ]

Обработка без наличия строки заголовка

Вывод JSON, когда не ожидается строка заголовка:

[
          {
             "1":"Nr",
             "2":"Item name",
             "3":"Key"
             "4":"Qty"
          },
          {
             "1":"1",
             "2":"active agent item",
             "3":"agent.hostname"
             "4":"33"
          },
          {
             "1":"2",
             "2":"passive agent item",
             "3":"agent.version"
             "4":"44"
          },
          {
             "1":"3",
             "2":"active,passive agent items",
             "3":"agent.ping"
             "4":"55"
          }
       ]