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

#### Обзор

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

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

#### Настройка

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

-   Перейдите на вкладку Предобработки в [элементе
    данных](/ru/manual/config/items/item#предобработка_значений_элемента_данных)
    / [правиле
    обнаружения](/ru/manual/discovery/low_level_discovery#предобработка)
    configuration
-   Нажмите на *Добавить*
-   Выберите опцию *CSV в JSON*

![](../../../../assets/en/manual/appendix/csv_to_json_params0.png){width="600"}

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

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

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

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

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

Строка заголовка 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

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

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

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

``` {.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, когда не ожидается строка заголовка:

``` {.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"
   }
]
```
