---
seo_title: JSON in XML API | JSON-Dateien in XML konvertieren | EnConvert
meta_desc: Konvertieren Sie JSON in XML mit POST /v1/convert/json-to-xml. Objekte zu <root>-Kindelementen, Arrays zu <item>-Elementen. Download direkt oder als Presigned-URL.
keywords: json zu xml api, json in xml umwandeln api, json to xml converter api, json datei in xml konvertieren, json array zu xml, rest api json nach xml, json xml konvertierung api, json in xml online api
---

# JSON in XML API

Konvertieren Sie eine JSON-Datei mit einem einzigen Request an `POST /v1/convert/json-to-xml` in XML. JSON-Objekte werden zu direkten Kindelementen von `<root>`, Arrays werden in `<root><item>`-Elemente verpackt und skalare Werte in `<root><value>`. Standardmäßig besteht die Antwort aus rohen XML-Bytes; setzen Sie `direct_download=false`, um stattdessen JSON-Metadaten mit einer Presigned-Download-URL zu erhalten.

---

## Endpunkt

```
POST /v1/convert/json-to-xml
```

**Content-Type:** `multipart/form-data`

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

**Ausgabeformat:** `.xml` (`application/xml`)

---

## 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 UTF-8-kodiert sein. |
| `output_filename` | `string` | Nein | Eingabedateiname | Eigener Ausgabedateiname. Die Endung `.xml` wird automatisch angehängt. |
| `direct_download` | `boolean` | Nein | `true` | Bei `true` werden rohe XML-Bytes zurückgegeben. Bei `false` JSON-Metadaten mit einer Presigned-Download-URL. |

---

## Konvertierungsregeln

- **JSON-Objekt** `{"name": "Alice", "age": 30}` wird zu:
  ```xml
  <root>
    <name>Alice</name>
    <age>30</age>
  </root>
  ```

- **JSON-Array** `[{"id": 1}, {"id": 2}]` wird zu:
  ```xml
  <root>
    <item>
      <id>1</id>
    </item>
    <item>
      <id>2</id>
    </item>
  </root>
  ```

- **Skalarer Wert** `"hello"` wird zu:
  ```xml
  <root>
    <value>hello</value>
  </root>
  ```

Das Wurzelelement ist immer `<root>`. Die Ausgabe ist formatiert (pretty-printed) mit einem Leerzeichen Einrückung.

---

## Antwort

### Direkter Download (`direct_download=true`, Standard)

```
HTTP 200 OK
Content-Type: application/xml
Content-Disposition: inline; filename="data_20260405_123456789.xml"
```

Gibt rohe XML-Bytes zurück.

### Metadaten-Antwort (`direct_download=false`)

```json
{
    "presigned_url": "https://spaces.example.com/...",
    "object_key": "env/files/{project_id}/json-to-xml/data_20260405_123456789.xml",
    "filename": "data_20260405_123456789.xml",
    "file_size": 1234,
    "conversion_time_seconds": 0.05
}
```

---

## Codebeispiele

### Python

```python
import requests

with open("data.json", "rb") as f:
    response = requests.post(
        "https://api.enconvert.com/v1/convert/json-to-xml",
        headers={"X-API-Key": "sk_your_private_key"},
        files={"file": ("data.json", f, "application/json")}
    )

with open("data.xml", "wb") as out:
    out.write(response.content)
```

### Node.js

```javascript
const form = new FormData();
form.append("file", fs.createReadStream("data.json"));

const response = await fetch("https://api.enconvert.com/v1/convert/json-to-xml", {
    method: "POST",
    headers: { "X-API-Key": "sk_your_private_key" },
    body: form
});

const xml = await response.text();
```

### PHP

```php
$ch = curl_init("https://api.enconvert.com/v1/convert/json-to-xml");
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")]
]);
$xml = curl_exec($ch);
curl_close($ch);
file_put_contents("data.xml", $xml);
```

### Go

```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-xml", 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-zu-XML-Konvertierung fehlgeschlagen |
| `401 Unauthorized` | Fehlender oder ungültiger API-Key / JWT-Token |
| `402 Payment Required` | Monatliches Ops-Kontingent aufgebraucht |
| `402 Payment Required` | Speicherlimit erreicht |
| `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 |
| Monatliche Konvertierungen | Planabhängig |

## Häufig gestellte Fragen

### Wie konvertiere ich JSON in XML über eine REST API?

Senden Sie einen `multipart/form-data`-POST-Request an `/v1/convert/json-to-xml` mit Ihrer `.json`-Datei im Feld `file` und authentifizieren Sie sich mit einem `X-API-Key`-Header oder einem JWT `Authorization: Bearer`-Token. Die Antwort ist das konvertierte XML.

### Wie werden JSON-Arrays in XML konvertiert?

Jedes Array-Element wird in ein `<item>`-Element unterhalb des `<root>`-Elements verpackt, sodass `[{"id": 1}, {"id": 2}]` zu `<root><item><id>1</id></item><item><id>2</id></item></root>` wird. Das Wurzelelement ist immer `<root>`.

### Kann ich statt roher XML-Bytes eine Download-URL erhalten?

Ja. Setzen Sie `direct_download=false`, um statt des rohen XML eine JSON-Metadaten-Antwort mit `presigned_url`, `object_key`, `filename`, `file_size` und `conversion_time_seconds` zu erhalten.

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

Ein `400` wird zurückgegeben, wenn die hochgeladene Datei keine `.json`-Datei ist, der Inhalt kein gültiges JSON ist oder die Konvertierung selbst fehlschlägt. Dateien über der maximalen Dateigröße Ihres Plans geben stattdessen `413 Payload Too Large` zurück.
