Ir al contenido

JSON from Text

Las IA suelen devolver el JSON envuelto en texto: un bloque ```json, una frase delante y otra detrás, comillas tipográficas o una coma sobrante al final. El nodo JSON from Text localiza el primer objeto o lista JSON bien formado dentro del texto, lo convierte en datos y, si quieres, comprueba que tenga los campos obligatorios.

Si no indicas el campo con el texto, el nodo usa la propia entrada o el primer campo habitual de una respuesta de IA o HTTP: contenido, content, text, output, response, respuesta, message, result, reply (y choices[0].message.content). Si el campo ya contiene un objeto, lo deja pasar tal cual.

ParámetroTipoRequeridoDescripción
pathtextNoRuta al texto que contiene el JSON. Vacío = la entrada o el primer campo habitual
expectselectNoauto (lo que haya), object (solo un objeto { }) o array (solo una lista [ ])
requiredFieldstextNoCampos obligatorios separados por comas (admite rutas como autor.nombre). Si falta alguno o está vacío, el resultado no es válido
fallbackFieldtextNoSi la IA contesta con texto sin JSON, el texto entero se usa como este campo (por ejemplo contenido_html) en vez de dar error, y se devuelve jsonRespaldo: true. Los campos obligatorios se siguen comprobando
onInvalidselectNoerror (por defecto: detiene la ejecución con un error) o continue (sigue con jsonOk = false)
errorMessagetextNoTexto que encabeza el error cuando se detiene
spreadbooleanNoAdemás del campo de salida, copia cada campo del objeto al nivel principal ({{titulo}} en vez de {{json.titulo}})
outputKeytextNoCampo donde se guarda el JSON (por defecto json)

El nodo conserva los datos que llegaron y añade:

{
"contenido": "Aquí tienes: ```json {\"titulo\":\"Hola\"} ```",
"json": { "titulo": "Hola" },
"jsonOk": true
}

Con onInvalid: continue y un resultado no válido: jsonOk es false, json es el JSON encontrado (o null) y jsonFaltan lista los campos obligatorios que no estaban. Úsalo con un nodo de decisión sobre data.jsonOk.

  • Bloques ```json o ```, y texto antes o después.
  • Llaves y corchetes dentro de cadenas de texto.
  • Comas finales ({"a":1,}) y comillas tipográficas (“ ”).
  • Varios bloques: ignora los que no son JSON válido y toma el primero que lo es (y que cumple expect).
{
"label": "Interpretar la respuesta",
"path": "contenido",
"expect": "object",
"requiredFields": "titulo, contenido_html",
"errorMessage": "La IA no devolvió un artículo interpretable",
"spread": true
}

Los nodos siguientes pueden usar {{titulo}} y {{contenido_html}}. Si la IA no devuelve un JSON con esos campos, la ejecución se detiene con un mensaje claro.

  • validate (Validador - para comprobar y limpiar el contenido)
  • editFields (Edit Fields - para dar forma al resultado)
  • decision (Nodo de decisión - para actuar según jsonOk)