[comment]: # ({c9f98b7f-c9f98b7f})
# 5 CSV 到 JSON 预处理

[comment]: # ({/c9f98b7f-c9f98b7f})

[comment]: # ({6cb1ec36-6cb1ec36})
#### 概述

在此预处理步骤中，可以将CSV file数据转换为
JSON格式。支持以下场景：

-   监控项 (监控项原型)
-   低级发现规则

[comment]: # ({/6cb1ec36-6cb1ec36})

[comment]: # ({77b863ab-77b863ab})
#### 配置

配置CSV转JSON预处理步骤：

-   前往[item](/manual/config/items/preprocessing)/[预处理](/manual/discovery/low_level_discovery#预处理)配置中的预处理选项卡
-   点击*添加*
-   选择*CSV转JSON*选项

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

第一个参数允许设置自定义分隔符。请注意，如果CSV输入的首行以"Sep="开头且后接单个UTF-8字符，当第一个参数未设置时该字符将作为分隔符。若第一个参数未设置且未从"Sep="行获取分隔符，则默认使用逗号作为分隔符。

第二个可选参数允许设置引号符号。

若勾选*包含标题行*复选框，标题行数值将被解析为列名（详见[标题行处理](#csv_header_processing)）。

若勾选*自定义失败处理*复选框，当预处理步骤失败时监控项不会变为不受支持状态。还可设置自定义错误处理选项：丢弃数值、设置指定值或设置指定错误消息。

[comment]: # ({/77b863ab-77b863ab})

[comment]: # ({b8624807-b8624807})
#### Header 处理

CSV file 标题行可通过两种不同方式处理：

-   若勾选 *With header row* 复选框 - 标题行值将被解析为列名。此时列名必须唯一且数据行不应包含比标题行更多的列；
-   若未勾选 *With header row* 复选框 - 标题行将

    interpreted as data. Column names are generated automatically
    (1,2,3,4...)

CSV file 示例：

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

[comment]: # ({/b8624807-b8624807})
