[comment]: # ({c9f98b7f-c9f98b7f})
# 5 Preprocesamiento de CSV a JSON

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

[comment]: # ({6cb1ec36-6cb1ec36})
#### Descripción general

En este paso de preprocesamiento es posible convertir datos de archivos CSV a
formato JSON. Está soportado en:

- métricas (prototipos de métricas)
- reglas de descubrimiento de bajo nivel

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

[comment]: # ({77b863ab-77b863ab})
#### Configuración

Para configurar un paso de preprocesamiento de CSV a JSON:

- Vaya a la pestaña Preprocesamiento en la configuración de la
    [métrica](/manual/config/items/preprocessing)/[regla de
    descubrimiento](/manual/discovery/low_level_discovery#preprocessing)
- Haga clic en *Agregar*
- Seleccione la opción *CSV a JSON*

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

El primer parámetro permite establecer un delimitador personalizado. Tenga en cuenta que si
la primera línea de entrada CSV comienza con "Sep=" y va seguida de un único
carácter UTF-8, ese carácter se utilizará como delimitador en
caso de que el primer parámetro no está configurado. Si el primer parámetro no está configurado
y no se obtiene un delimitador de la línea "Sep=", entonces se utiliza una coma
como separador.

El segundo parámetro opcional permite establecer un símbolo de cotización.

Si la casilla de verificación *Con fila de encabezado* está marcada, los valores de la línea de encabezado
se interpretan como nombres de columnas (consulte [Procesamiento del
encabezado](#csv_header_processing) para obtener más información).

Si la casilla de verificación *Personalizado en caso de error* está marcada, la métrica no se convertirá en
no compatible en caso de que falle un paso de preprocesamiento. Además 
se pueden configurar opciones personalizadas de manejo de errores: descartar el valor, establecer un valor específico o establecer un mensaje de error específico.

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

[comment]: # ({b8624807-b8624807})
#### Procesamiento de encabezado

La línea de encabezado del archivo CSV se puede procesar de dos maneras diferentes:

- Si la casilla de verificación *Con fila de encabezado* está marcada, los valores de la línea de encabezado son
    interpretados como nombres de columnas. En este caso los nombres de las columnas deben ser
    únicos y la fila de datos no debe contener más columnas que las de la
    fila de encabezado;
- Si la casilla de verificación *Con fila de encabezado* no está marcada, la línea de encabezado es
    interpretada como datos. Los nombres de las columnas se generan automáticamente
    (1,2,3,4...)

Ejemplo de archivo 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
Un carácter de comilla dentro de un campo entre comillas en la entrada
debe escaparse precediéndolo de otra comilla.
:::

**Procesamiento de la línea de encabezado**

Salida JSON cuando se espera una línea de encabezado:

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

**Sin procesamiento de línea de encabezado**

Salida JSON cuando no se espera una línea de encabezado:

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