# Cómo forzar salida JSON válida (sin markdown)

> Plantillas para extraer/transformar datos a JSON estricto, con reglas de validación.

Fuente: Promptea — https://www.promptea.me/es/guides/json-output · Idioma: Español · Última actualización: 2026-11-09

## Reglas que funcionan

- Decile: 'Devolvé SOLO JSON' y prohibí texto extra.
- Definí un esquema (claves, tipos, valores permitidos).
- Aclarás qué hacer si falta un campo (null vs omitir).
- Pedí una segunda pasada: validar + corregir JSON.

## Antes → después: de 'dame JSON' a un contrato

- Antes: "Dame los datos de contacto de este email en JSON." Resultado típico: una frase de introducción, un bloque de código markdown y claves que cambian en cada corrida.
- Después: "Extraé los datos de contacto. Devolvé SOLO JSON válido, sin markdown. Esquema: {name: string, email: string|null, phone: string|null}. Usá null para lo que falte; no adivines."
- Qué cambió: la salida es un esquema definido, con una regla para valores faltantes y la prohibición de texto extra, así que el mismo prompt da la misma forma cada vez.

## Validá en el código, no por fe

- Parseá la respuesta con un parser JSON de verdad y controlala contra el esquema (claves obligatorias, tipos, valores permitidos) antes de usarla.
- Si falla, reintentá una vez con el error adjunto: 'Tu salida anterior falló la validación: [error]. Devolvé solo el JSON corregido.'
- Donde el modelo o la API ofrece un modo nativo de salida estructurada, usalo: el formato se impone al generar en vez de pedirse en prosa. Las páginas de modelos de Promptea muestran cuáles modelos vigentes lo listan.
- Un JSON válido no es necesariamente un contenido correcto. Contrastá valores con el texto fuente, sobre todo números y fechas.

## Plantillas

### Extraer JSON estructurado

```text
Extraé datos del texto de abajo.
Devolvé SOLO JSON válido (sin markdown, sin comentarios).

Esquema:
{
  "people": [
    {
      "name": "string",
      "role": "string|null",
      "email": "string|null"
    }
  ],
  "dates": ["YYYY-MM-DD"]
}

Reglas:
- Si falta, usá null (no inventes).
- Si una fecha es ambigua, omitila.

Texto:
"""[pegá acá]"""

Antes de finalizar, validá que sea JSON válido y que matchee el esquema.
```

[Abrir en Promptea](https://www.promptea.me/es/analyzer?prompt=Extra%C3%A9+datos+del+texto+de+abajo.%0ADevolv%C3%A9+SOLO+JSON+v%C3%A1lido+%28sin+markdown%2C+sin+comentarios%29.%0A%0AEsquema%3A%0A%7B%0A++%22people%22%3A+%5B%0A++++%7B%0A++++++%22name%22%3A+%22string%22%2C%0A++++++%22role%22%3A+%22string%7Cnull%22%2C%0A++++++%22email%22%3A+%22string%7Cnull%22%0A++++%7D%0A++%5D%2C%0A++%22dates%22%3A+%5B%22YYYY-MM-DD%22%5D%0A%7D%0A%0AReglas%3A%0A-+Si+falta%2C+us%C3%A1+null+%28no+inventes%29.%0A-+Si+una+fecha+es+ambigua%2C+omitila.%0A%0ATexto%3A%0A%22%22%22%5Bpeg%C3%A1+ac%C3%A1%5D%22%22%22%0A%0AAntes+de+finalizar%2C+valid%C3%A1+que+sea+JSON+v%C3%A1lido+y+que+matchee+el+esquema.&purpose=data&target=gpt)

### Transformar JSON a un nuevo esquema

```text
Vas a recibir un JSON de entrada. Convertilo al esquema de salida.
Devolvé SOLO JSON válido.

JSON de entrada:
"""[pegá JSON]"""

Esquema de salida:
{
  "items": [
    { "id": "string", "title": "string", "tags": ["string"] }
  ]
}

Reglas:
- Mantené el significado; no inventes items.
- Si un campo no mapea, ignoralo.
- Asegurate de que tags estén en minúsculas.

Validá el JSON antes de devolverlo.
```

[Abrir en Promptea](https://www.promptea.me/es/analyzer?prompt=Vas+a+recibir+un+JSON+de+entrada.+Convertilo+al+esquema+de+salida.%0ADevolv%C3%A9+SOLO+JSON+v%C3%A1lido.%0A%0AJSON+de+entrada%3A%0A%22%22%22%5Bpeg%C3%A1+JSON%5D%22%22%22%0A%0AEsquema+de+salida%3A%0A%7B%0A++%22items%22%3A+%5B%0A++++%7B+%22id%22%3A+%22string%22%2C+%22title%22%3A+%22string%22%2C+%22tags%22%3A+%5B%22string%22%5D+%7D%0A++%5D%0A%7D%0A%0AReglas%3A%0A-+Manten%C3%A9+el+significado%3B+no+inventes+items.%0A-+Si+un+campo+no+mapea%2C+ignoralo.%0A-+Asegurate+de+que+tags+est%C3%A9n+en+min%C3%BAsculas.%0A%0AValid%C3%A1+el+JSON+antes+de+devolverlo.&purpose=data&target=gemini)

## Preguntas frecuentes

### ¿Por qué igual agrega texto?

Porque no lo hiciste costoso. Repetí la restricción, poné esquema y pedí validación.

### ¿Conviene usar JSON Schema?

Sí si vas a integrar. Aunque sea un esquema simplificado (claves + tipos) mejora mucho.

### ¿Qué debe devolver el modelo cuando falta un valor?

Elegí una regla y decila: null para un valor faltante u omitir la clave. Mezclar ambas obliga a tu código a manejar las dos. Aclarale también que no adivine.

### ¿Puedo pedir JSON y una explicación en la misma respuesta?

Mantenelos separados: poné la explicación en una clave dedicada como "notes" o hacé una segunda solicitud. El texto fuera del JSON rompe el parseo.
