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 30 en CSV devient "30" en JSON, pas 30.
  • 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.