---
seo_title: API JSON vers XML | Convertir JSON en XML | EnConvert
meta_desc: Convertissez du JSON en XML via POST /v1/convert/json-to-xml. Objets en enfants de <root>, tableaux en éléments <item>. Réponse directe ou URL présignée.
keywords: api json vers xml, convertir json en xml api, json to xml api rest, conversion json xml en ligne api, transformer json en xml, api convertir fichier json en xml, json vers xml endpoint, tableau json en xml
---

# API JSON vers XML

Convertissez un fichier JSON en XML avec une seule requête vers `POST /v1/convert/json-to-xml`. Les objets JSON deviennent des enfants directs de `<root>`, les tableaux sont encapsulés dans des éléments `<root><item>` et les valeurs scalaires dans `<root><value>`. Par défaut, la réponse contient les octets XML bruts ; définissez `direct_download=false` pour recevoir à la place des métadonnées JSON avec une URL de téléchargement présignée.

---

## Endpoint

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

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

**Entrée acceptée :** fichiers `.json` (encodés en UTF-8)

**Format de sortie :** `.xml` (`application/xml`)

---

## 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 être encodé en UTF-8. |
| `output_filename` | `string` | Non | Nom du fichier d'entrée | Nom de fichier de sortie personnalisé. L'extension `.xml` est ajoutée automatiquement. |
| `direct_download` | `boolean` | Non | `true` | Lorsque `true`, renvoie les octets XML bruts. Lorsque `false`, renvoie des métadonnées JSON avec une URL de téléchargement présignée. |

---

## Règles de conversion

- Un **objet JSON** `{"name": "Alice", "age": 30}` devient :
  ```xml
  <root>
    <name>Alice</name>
    <age>30</age>
  </root>
  ```

- Un **tableau JSON** `[{"id": 1}, {"id": 2}]` devient :
  ```xml
  <root>
    <item>
      <id>1</id>
    </item>
    <item>
      <id>2</id>
    </item>
  </root>
  ```

- Une **valeur scalaire** `"hello"` devient :
  ```xml
  <root>
    <value>hello</value>
  </root>
  ```

L'élément racine est toujours `<root>`. La sortie est formatée avec une indentation d'un seul espace.

---

## Réponse

### Téléchargement direct (`direct_download=true`, par défaut)

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

Renvoie les octets XML bruts.

### Réponse avec métadonnées (`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
}
```

---

## Exemples de code

### 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)
```

---

## 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` | Échec de la conversion JSON vers XML |
| `401 Unauthorized` | Clé API / jeton JWT manquant ou invalide |
| `402 Payment Required` | Quota mensuel d'ops épuisé |
| `402 Payment Required` | Limite de stockage atteinte |
| `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 |
| Conversions mensuelles | Dépend du forfait |

## Questions fréquentes

### Comment convertir du JSON en XML avec une API REST ?

Envoyez une requête POST `multipart/form-data` à `/v1/convert/json-to-xml` avec votre fichier `.json` dans le champ `file` et authentifiez-vous avec un en-tête `X-API-Key` ou un jeton JWT `Authorization: Bearer`. La réponse est le XML converti.

### Comment les tableaux JSON sont-ils convertis en XML ?

Chaque élément du tableau est encapsulé dans un élément `<item>` sous l'élément `<root>`, donc `[{"id": 1}, {"id": 2}]` devient `<root><item><id>1</id></item><item><id>2</id></item></root>`. L'élément racine est toujours `<root>`.

### Puis-je obtenir une URL de téléchargement au lieu des octets XML bruts ?

Oui. Définissez `direct_download=false` pour recevoir une réponse JSON de métadonnées contenant `presigned_url`, `object_key`, `filename`, `file_size` et `conversion_time_seconds` au lieu du XML brut.

### Pourquoi l'API JSON vers XML renvoie-t-elle 400 Bad Request ?

Un `400` est renvoyé lorsque le fichier envoyé n'est pas un fichier `.json`, que le contenu n'est pas du JSON valide ou que la conversion elle-même échoue. Les fichiers dépassant la taille maximale de votre forfait renvoient `413 Payload Too Large` à la place.
