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)
Important : Si les objets du tableau ont des clés différentes, les clés supplémentaires des objets ultérieurs sont silencieusement ignorées. Les clés manquantes produisent des valeurs vides. Pour de meilleurs résultats, assurez-vous que tous les objets possèdent le même ensemble de clés.

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.