API CSV vers JSON#
Convertissez un fichier CSV en tableau JSON avec une seule requête vers POST /v1/convert/csv-to-json. La première ligne sert d'en-têtes de colonnes et chaque ligne suivante devient un objet JSON dans le tableau de sortie, toutes les valeurs restant des chaînes (aucune inférence de type). Les réponses renvoient les octets JSON bruts par défaut, ou des métadonnées avec une URL de téléchargement présignée lorsque direct_download=false.
Endpoint#
POST /v1/convert/csv-to-json
Content-Type : multipart/form-data
Entrée acceptée : fichiers .csv (encodés en UTF-8)
Format de sortie : .json (application/json)
Authentification#
Nécessite soit une clé API privée, soit un jeton JWT issu d'une clé publique.
X-API-Key: sk_your_private_key
Ou :
Authorization: Bearer <jwt_token>
Paramètres de la requête#
| Paramètre | Type | Requis | Par défaut | Description |
|---|---|---|---|---|
file |
file | Oui | -- | Le fichier .csv à convertir. La première ligne doit contenir les en-têtes de colonnes. Encodé en UTF-8. |
output_filename |
string |
Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension .json est ajoutée automatiquement. |
direct_download |
boolean |
Non | true |
Lorsque true, renvoie les octets JSON bruts. Lorsque false, renvoie des métadonnées avec une URL de téléchargement présignée. |
Règles de conversion#
name,age,city
Alice,30,London
Bob,25,Paris
Devient :
[
{"name": "Alice", "age": "30", "city": "London"},
{"name": "Bob", "age": "25", "city": "Paris"}
]
- La première ligne est traitée comme les en-têtes de colonnes
- Le délimiteur est la virgule (non configurable)
- Toutes les valeurs restent des chaînes dans la sortie JSON -- aucune inférence de type n'est effectuée. Le nombre
30en CSV devient"30"en JSON, pas30. - La sortie est du JSON formaté avec une indentation de 2 espaces
Réponse#
Téléchargement direct (direct_download=true, par défaut)#
HTTP 200 OK
Content-Type: application/json
Content-Disposition: inline; filename="data_20260405_123456789.json"
Réponse avec métadonnées (direct_download=false)#
{
"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
}
Exemples de code#
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#
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#
$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#
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)
Réponses d'erreur#
| Statut | Condition |
|---|---|
400 Bad Request |
Le fichier n'est pas un fichier .csv |
400 Bad Request |
Le fichier CSV est vide ou ne contient aucune ligne valide |
400 Bad Request |
Encodage CSV invalide (UTF-8 attendu) |
401 Unauthorized |
Clé API / jeton JWT manquant ou invalide |
402 Payment Required |
Quota mensuel d'ops épuisé |
413 Payload Too Large |
Le fichier dépasse la taille maximale du forfait |
Limites#
| Limite | Valeur |
|---|---|
| Taille de fichier max | Dépend du forfait (Founding : 5 MB) |
| Encodage d'entrée | UTF-8 uniquement |
| Inférence de type | Aucune (toutes les valeurs sont des chaînes) |
| Conversions mensuelles | Dépend du forfait |
Questions fréquentes#
Comment convertir du CSV en JSON avec une API REST ?#
Envoyez une requête POST multipart/form-data à /v1/convert/csv-to-json avec votre fichier .csv dans le champ file, authentifiée avec un en-tête X-API-Key ou un jeton JWT Authorization: Bearer. La première ligne doit contenir les en-têtes de colonnes.
Pourquoi les nombres de mon CSV sont-ils renvoyés comme des chaînes dans le JSON ?#
Aucune inférence de type n'est effectuée. Toutes les valeurs restent des chaînes dans la sortie JSON. Le nombre 30 en CSV devient "30" en JSON, pas 30.
Puis-je utiliser un délimiteur autre que la virgule ?#
Non. Le délimiteur est toujours la virgule et n'est pas configurable.
Puis-je obtenir une URL de téléchargement présignée au lieu des octets JSON bruts ?#
Oui. Définissez direct_download=false pour recevoir des métadonnées avec presigned_url, object_key, filename, file_size et conversion_time_seconds.
Pourquoi l'API CSV vers JSON renvoie-t-elle 400 Bad Request ?#
Un 400 est renvoyé lorsque le fichier n'est pas un fichier .csv, que le CSV est vide ou ne contient aucune ligne valide, ou que l'encodage n'est pas UTF-8. Les fichiers trop volumineux renvoient 413 Payload Too Large.