API JSON vers CSV#
Convertissez un fichier JSON en CSV avec une seule requête vers POST /v1/convert/json-to-csv. L'entrée doit être un tableau JSON d'objets ; les en-têtes de colonnes sont dérivés des clés du premier objet et les lignes sont délimitées par des virgules avec le mode de guillemets QUOTE_MINIMAL. Par défaut, la réponse contient les octets CSV bruts ; définissez direct_download=false pour recevoir à la place des métadonnées avec une URL de téléchargement présignée.
Endpoint#
POST /v1/convert/json-to-csv
Content-Type : multipart/form-data
Entrée acceptée : fichiers .json (encodés en UTF-8)
Format de sortie : .csv (text/csv)
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 .json à convertir. Doit contenir un tableau JSON d'objets. Encodé en UTF-8. |
output_filename |
string |
Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension .csv est ajoutée automatiquement. |
direct_download |
boolean |
Non | true |
Lorsque true, renvoie les octets CSV bruts. Lorsque false, renvoie des métadonnées avec une URL de téléchargement présignée. |
Règles de conversion#
[
{"name": "Alice", "age": 30, "city": "London"},
{"name": "Bob", "age": 25, "city": "Paris"}
]
Devient :
name,age,city
Alice,30,London
Bob,25,Paris
- L'entrée doit être un tableau JSON d'objets (liste de dictionnaires)
- Les en-têtes de colonnes sont dérivés uniquement des clés du premier objet
- Le délimiteur est la virgule (non configurable)
- Les guillemets suivent
QUOTE_MINIMAL-- les valeurs contenant des virgules, des guillemets ou des sauts de ligne sont entourées de guillemets - Les objets ou tableaux imbriqués dans les valeurs sont sérialisés sous leur représentation en chaîne (non aplatis)
Réponse#
Téléchargement direct (direct_download=true, par défaut)#
HTTP 200 OK
Content-Type: text/csv
Content-Disposition: inline; filename="data_20260405_123456789.csv"
Réponse avec métadonnées (direct_download=false)#
{
"presigned_url": "https://spaces.example.com/...",
"object_key": "env/files/{project_id}/json-to-csv/data_20260405_123456789.csv",
"filename": "data_20260405_123456789.csv",
"file_size": 1234,
"conversion_time_seconds": 0.03
}
Exemples de code#
Python#
import requests
with open("data.json", "rb") as f:
response = requests.post(
"https://api.enconvert.com/v1/convert/json-to-csv",
headers={"X-API-Key": "sk_your_private_key"},
files={"file": ("data.json", f, "application/json")}
)
with open("data.csv", "wb") as out:
out.write(response.content)
Node.js#
const form = new FormData();
form.append("file", fs.createReadStream("data.json"));
const response = await fetch("https://api.enconvert.com/v1/convert/json-to-csv", {
method: "POST",
headers: { "X-API-Key": "sk_your_private_key" },
body: form
});
const csv = await response.text();
PHP#
$ch = curl_init("https://api.enconvert.com/v1/convert/json-to-csv");
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.json", "application/json")]
]);
$csv = curl_exec($ch);
curl_close($ch);
Go#
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("file", "data.json")
file, _ := os.Open("data.json")
io.Copy(part, file)
writer.Close()
req, _ := http.NewRequest("POST", "https://api.enconvert.com/v1/convert/json-to-csv", 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 .json |
400 Bad Request |
Contenu JSON invalide |
400 Bad Request |
Le JSON doit être un tableau d'objets pour la conversion en CSV |
400 Bad Request |
Le tableau JSON est vide |
400 Bad Request |
Le tableau JSON doit contenir des objets (dictionnaires) |
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 |
| Structure d'entrée | Tableau d'objets uniquement |
| Conversions mensuelles | Dépend du forfait |
Questions fréquentes#
Comment convertir un tableau JSON en CSV avec une API REST ?#
Envoyez une requête POST multipart/form-data à /v1/convert/json-to-csv avec un fichier .json contenant un tableau d'objets dans le champ file, authentifiée avec un en-tête X-API-Key ou un jeton JWT Authorization: Bearer. La réponse est du CSV délimité par des virgules.
Que se passe-t-il si les objets JSON ont des clés différentes ?#
Les en-têtes de colonnes proviennent uniquement des clés du premier objet. Les clés supplémentaires des objets ultérieurs sont silencieusement ignorées et les clés manquantes produisent des valeurs vides ; assurez-vous donc que tous les objets partagent le même ensemble de clés pour de meilleurs résultats.
Les objets JSON imbriqués sont-ils aplatis en colonnes CSV ?#
Non. Les objets ou tableaux imbriqués dans les valeurs sont sérialisés sous leur représentation en chaîne plutôt qu'aplatis en colonnes séparées.
Puis-je changer le délimiteur CSV ?#
Non. Le délimiteur est toujours la virgule et n'est pas configurable. Les guillemets suivent QUOTE_MINIMAL, donc les valeurs contenant des virgules, des guillemets ou des sauts de ligne sont automatiquement entourées de guillemets.
Pourquoi l'API JSON vers CSV renvoie-t-elle 400 Bad Request ?#
Un 400 est renvoyé lorsque le fichier n'est pas un .json, que le JSON est invalide, que le JSON n'est pas un tableau d'objets ou que le tableau est vide. Les fichiers trop volumineux renvoient 413 Payload Too Large.