JSON in CSV API#

Konvertieren Sie eine JSON-Datei mit einem einzigen Request an POST /v1/convert/json-to-csv in CSV. Die Eingabe muss ein JSON-Array von Objekten sein; die Spaltenüberschriften werden aus den Keys des ersten Objekts abgeleitet, und die Zeilen sind kommagetrennt mit QUOTE_MINIMAL-Quoting. Standardmäßig besteht die Antwort aus rohen CSV-Bytes; setzen Sie direct_download=false, um stattdessen Metadaten mit einer Presigned-Download-URL zu erhalten.


Endpunkt#

POST /v1/convert/json-to-csv

Content-Type: multipart/form-data

Akzeptierte Eingabe: .json-Dateien (UTF-8-kodiert)

Ausgabeformat: .csv (text/csv)


Authentifizierung#

Erfordert entweder einen privaten API-Key oder ein von einem Public Key ausgestelltes JWT-Token.

X-API-Key: sk_your_private_key

Oder:

Authorization: Bearer <jwt_token>

Request-Parameter#

Parameter Typ Erforderlich Standard Beschreibung
file file Ja -- Die zu konvertierende .json-Datei. Muss ein JSON-Array von Objekten enthalten. UTF-8-kodiert.
output_filename string Nein Eingabedateiname Eigener Ausgabedateiname. Die Endung .csv wird automatisch angehängt.
direct_download boolean Nein true Bei true werden rohe CSV-Bytes zurückgegeben. Bei false Metadaten mit einer Presigned-Download-URL.

Konvertierungsregeln#

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

Wird zu:

name,age,city
Alice,30,London
Bob,25,Paris
  • Die Eingabe muss ein JSON-Array von Objekten sein (Liste von Dictionaries)
  • Spaltenüberschriften werden ausschließlich aus den Keys des ersten Objekts abgeleitet
  • Trennzeichen ist das Komma (nicht konfigurierbar)
  • Quoting folgt QUOTE_MINIMAL -- Werte mit Kommas, Anführungszeichen oder Zeilenumbrüchen werden in Anführungszeichen gesetzt
  • Verschachtelte Objekte oder Arrays in Werten werden als ihre String-Repräsentation serialisiert (nicht abgeflacht)
Wichtig: Wenn Objekte im Array unterschiedliche Keys haben, werden zusätzliche Keys späterer Objekte stillschweigend verworfen. Fehlende Keys erzeugen leere Werte. Stellen Sie für beste Ergebnisse sicher, dass alle Objekte denselben Satz an Keys haben.

Antwort#

Direkter Download (direct_download=true, Standard)#

HTTP 200 OK
Content-Type: text/csv
Content-Disposition: inline; filename="data_20260405_123456789.csv"

Metadaten-Antwort (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
}

Codebeispiele#

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)

Fehlerantworten#

Status Bedingung
400 Bad Request Datei ist keine .json-Datei
400 Bad Request Ungültiger JSON-Inhalt
400 Bad Request JSON muss für die CSV-Konvertierung ein Array von Objekten sein
400 Bad Request JSON-Array ist leer
400 Bad Request JSON-Array muss Objekte (Dictionaries) enthalten
401 Unauthorized Fehlender oder ungültiger API-Key / JWT-Token
402 Payment Required Monatliches Ops-Kontingent aufgebraucht
413 Payload Too Large Datei überschreitet die maximale Dateigröße des Plans

Limits#

Limit Wert
Maximale Dateigröße Planabhängig (Founding: 5 MB)
Eingabekodierung Nur UTF-8
Eingabestruktur Nur Array von Objekten
Monatliche Konvertierungen Planabhängig

Häufig gestellte Fragen#

Wie konvertiere ich ein JSON-Array in CSV über eine REST API?#

Senden Sie einen multipart/form-data-POST-Request an /v1/convert/json-to-csv mit einer .json-Datei, die ein Array von Objekten enthält, im Feld file, authentifiziert mit einem X-API-Key-Header oder einem JWT Authorization: Bearer-Token. Die Antwort ist kommagetrenntes CSV.

Was passiert, wenn die JSON-Objekte unterschiedliche Keys haben?#

Die Spaltenüberschriften stammen ausschließlich aus den Keys des ersten Objekts. Zusätzliche Keys späterer Objekte werden stillschweigend verworfen, und fehlende Keys erzeugen leere Werte. Stellen Sie daher für beste Ergebnisse sicher, dass alle Objekte denselben Key-Satz teilen.

Werden verschachtelte JSON-Objekte in CSV-Spalten abgeflacht?#

Nein. Verschachtelte Objekte oder Arrays in Werten werden als ihre String-Repräsentation serialisiert und nicht in separate Spalten abgeflacht.

Kann ich das CSV-Trennzeichen ändern?#

Nein. Das Trennzeichen ist immer ein Komma und nicht konfigurierbar. Quoting folgt QUOTE_MINIMAL, sodass Werte mit Kommas, Anführungszeichen oder Zeilenumbrüchen automatisch in Anführungszeichen gesetzt werden.

Warum gibt die JSON-zu-CSV-API 400 Bad Request zurück?#

Ein 400 wird zurückgegeben, wenn die Datei keine .json-Datei ist, das JSON ungültig ist, das JSON kein Array von Objekten ist oder das Array leer ist. Zu große Dateien geben 413 Payload Too Large zurück.