---
seo_title: API CSV in JSON | Converti file CSV in JSON | EnConvert
meta_desc: Converti CSV in JSON con POST /v1/convert/csv-to-json. La prima riga diventa le chiavi, ogni riga un oggetto JSON; i valori sono stringhe, senza inferenza di tipo.
keywords: api csv in json, convertire csv in json api, csv to json api, csv in array json api, righe csv in oggetti json, convertitore csv json api, caricare csv convertire in json, endpoint csv to json
---

# API CSV in JSON

Converti un file CSV in un array JSON con una singola richiesta a `POST /v1/convert/csv-to-json`. La prima riga viene usata come intestazioni di colonna e ogni riga successiva diventa un oggetto JSON nell'array di output, con tutti i valori mantenuti come stringhe (nessuna inferenza di tipo). Le risposte restituiscono byte JSON grezzi per default, oppure metadati con un URL di download presigned quando `direct_download=false`.

---

## Endpoint

```
POST /v1/convert/csv-to-json
```

**Content-Type:** `multipart/form-data`

**Input accettato:** file `.csv` (codificati in UTF-8)

**Formato di output:** `.json` (`application/json`)

---

## Autenticazione

Richiede una chiave API privata oppure un token JWT ottenuto da una chiave pubblica.

```
X-API-Key: sk_your_private_key
```

Oppure:

```
Authorization: Bearer <jwt_token>
```

---

## Parametri della richiesta

| Parametro | Tipo | Obbligatorio | Default | Descrizione |
|-----------|------|----------|---------|-------------|
| `file` | file | Sì | -- | Il file `.csv` da convertire. La prima riga deve contenere le intestazioni di colonna. Codificato in UTF-8. |
| `output_filename` | `string` | No | Nome del file di input | Nome file di output personalizzato. L'estensione `.json` viene aggiunta automaticamente. |
| `direct_download` | `boolean` | No | `true` | Con `true`, restituisce i byte JSON grezzi. Con `false`, restituisce metadati con un URL di download presigned. |

---

## Regole di conversione

```csv
name,age,city
Alice,30,London
Bob,25,Paris
```

Diventa:

```json
[
  {"name": "Alice", "age": "30", "city": "London"},
  {"name": "Bob", "age": "25", "city": "Paris"}
]
```

- La prima riga è trattata come intestazioni di colonna
- Il delimitatore è la virgola (non configurabile)
- **Tutti i valori restano stringhe** nell'output JSON -- non viene eseguita alcuna inferenza di tipo. Il numero `30` nel CSV diventa `"30"` in JSON, non `30`.
- L'output è JSON formattato con indentazione a 2 spazi

---

## Risposta

### Download diretto (`direct_download=true`, default)

```
HTTP 200 OK
Content-Type: application/json
Content-Disposition: inline; filename="data_20260405_123456789.json"
```

### Risposta con metadati (`direct_download=false`)

```json
{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/csv-to-json/data_20260405_123456789.json",
    "filename": "data_20260405_123456789.json",
    "file_size": 1234,
    "conversion_time_seconds": 0.03
}
```

---

## Esempi di codice

### Python

```python
import requests

with open("data.csv", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/csv-to-json",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("data.csv", f, "text/csv")}
    )

with open("data.json", "wb") as out:
    out.write(response.content)
```

### Node.js

```javascript
const form = new FormData();
form.append("file", fs.createReadStream("data.csv"));

const response = await fetch("https://api.enconvert.com/v1/convert/csv-to-json", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

const json = await response.json();
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/csv-to-json");
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["X-API-Key: sk_your_private_key"],
    CURLOPT_POSTFIELDS => ["file" => new CURLFile("data.csv", "text/csv")]
]);
$json = curl_exec($ch);
curl_close($ch);
```

### Go

```go
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "data.csv")
file, _ := os.Open("data.csv")
io.Copy(part, file)
writer.Close()

req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/csv-to-json", body)
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("X-API-Key", "sk_your_private_key")
resp, _ := http.DefaultClient.Do(req)
```

---

## Risposte di errore

| Stato | Condizione |
|--------|-----------|
| `400 Bad Request` | Il file non è un file `.csv` |
| `400 Bad Request` | Il file CSV è vuoto o non contiene righe valide |
| `400 Bad Request` | Codifica CSV non valida (attesa UTF-8) |
| `401 Unauthorized` | Chiave API / token JWT mancante o non valido |
| `402 Payment Required` | Quota mensile di ops esaurita |
| `413 Payload Too Large` | Il file supera la dimensione massima del piano |

---

## Limiti

| Limite | Valore |
|-------|-------|
| Dimensione massima del file | Dipende dal piano (Founding: 5 MB) |
| Codifica di input | Solo UTF-8 |
| Inferenza di tipo | Nessuna (tutti i valori sono stringhe) |
| Conversioni mensili | Dipende dal piano |

## Domande frequenti

### Come converto CSV in JSON con una API REST?

Invia una richiesta POST `multipart/form-data` a `/v1/convert/csv-to-json` con il file `.csv` nel campo `file`, autenticandoti con un header `X-API-Key` o un token JWT `Authorization: Bearer`. La prima riga deve contenere le intestazioni di colonna.

### Perché i numeri del mio CSV vengono restituiti come stringhe nel JSON?

Non viene eseguita alcuna inferenza di tipo. Tutti i valori restano stringhe nell'output JSON. Il numero `30` nel CSV diventa `"30"` in JSON, non `30`.

### Posso usare un delimitatore diverso dalla virgola?

No. Il delimitatore è sempre la virgola e non è configurabile.

### Posso ottenere un URL di download presigned invece dei byte JSON grezzi?

Sì. Imposta `direct_download=false` per ricevere metadati con `presigned_url`, `object_key`, `filename`, `file_size` e `conversion_time_seconds`.

### Perché l'API CSV in JSON restituisce 400 Bad Request?

Un `400` viene restituito quando il file non è un file `.csv`, il CSV è vuoto o non contiene righe valide, oppure la codifica non è UTF-8. I file troppo grandi restituiscono `413 Payload Too Large`.
