API de JSON a XML#

Convierte un archivo JSON a XML con una sola petición a POST /v1/convert/json-to-xml. Los objetos JSON se convierten en hijos directos de <root>, los arrays se envuelven en elementos <root><item> y los valores escalares en <root><value>. Por defecto la respuesta son los bytes XML sin procesar; establece direct_download=false para recibir en su lugar metadatos JSON con una URL de descarga prefirmada.


Endpoint#

POST /v1/convert/json-to-xml

Content-Type: multipart/form-data

Entrada aceptada: archivos .json (codificados en UTF-8)

Formato de salida: .xml (application/xml)


Autenticación#

Requiere una clave API privada o un token JWT obtenido de una clave pública.

X-API-Key: sk_your_private_key

O bien:

Authorization: Bearer <jwt_token>

Parámetros de la petición#

Parámetro Tipo Obligatorio Por defecto Descripción
file file -- El archivo .json a convertir. Debe estar codificado en UTF-8.
output_filename string No Nombre del archivo de entrada Nombre de archivo de salida personalizado. La extensión .xml se añade automáticamente.
direct_download boolean No true Con true, devuelve los bytes XML sin procesar. Con false, devuelve metadatos JSON con una URL de descarga prefirmada.

Reglas de conversión#

  • Objeto JSON {"name": "Alice", "age": 30} se convierte en: xml <root> <name>Alice</name> <age>30</age> </root>

  • Array JSON [{"id": 1}, {"id": 2}] se convierte en: xml <root> <item> <id>1</id> </item> <item> <id>2</id> </item> </root>

  • Valor escalar "hello" se convierte en: xml <root> <value>hello</value> </root>

El elemento raíz es siempre <root>. La salida se formatea de forma legible con indentación de un espacio.


Respuesta#

Descarga directa (direct_download=true, por defecto)#

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

Devuelve los bytes XML sin procesar.

Respuesta con metadatos (direct_download=false)#

{
    "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
}

Ejemplos de código#

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#

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#

$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#

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)

Respuestas de error#

Estado Condición
400 Bad Request El archivo no es un archivo .json
400 Bad Request Contenido JSON no válido
400 Bad Request La conversión de JSON a XML falló
401 Unauthorized Clave API o token JWT ausente o no válido
402 Payment Required Cuota mensual de ops agotada
402 Payment Required Límite de almacenamiento alcanzado
413 Payload Too Large El archivo supera el tamaño máximo de archivo del plan

Límites#

Límite Valor
Tamaño máximo de archivo Según el plan (Founding: 5 MB)
Codificación de entrada Solo UTF-8
Conversiones mensuales Según el plan

Preguntas frecuentes#

¿Cómo convierto JSON a XML con una API REST?#

Envía una petición POST multipart/form-data a /v1/convert/json-to-xml con tu archivo .json en el campo file y autentícate con una cabecera X-API-Key o un token JWT Authorization: Bearer. La respuesta es el XML convertido.

¿Cómo se convierten los arrays JSON a XML?#

Cada elemento del array se envuelve en un elemento <item> bajo el elemento <root>, de modo que [{"id": 1}, {"id": 2}] se convierte en <root><item><id>1</id></item><item><id>2</id></item></root>. El elemento raíz es siempre <root>.

¿Puedo obtener una URL de descarga en lugar de los bytes XML sin procesar?#

Sí. Establece direct_download=false para recibir una respuesta de metadatos JSON que contiene presigned_url, object_key, filename, file_size y conversion_time_seconds en lugar del XML sin procesar.

¿Por qué la API de JSON a XML devuelve 400 Bad Request?#

Se devuelve un 400 cuando el archivo subido no es un archivo .json, el contenido no es JSON válido o la propia conversión falla. Los archivos que superan el tamaño máximo de tu plan devuelven 413 Payload Too Large en su lugar.