Saca el JSON de la respuesta de un LLM
Pides JSON y el modelo contesta con una frase, un bloque ```json y a veces llaves sueltas. Extrae el primer objeto válido o devuelve null.
Escribe extractJson(reply) que devuelva el primer objeto JSON válido que haya en reply, o null si no hay ninguno.
Si hay un bloque de código con tres comillas invertidas (con o sin la etiqueta json) y su contenido es un objeto válido, úsalo. Si no, busca cada { y su } de cierre, teniendo en cuenta llaves anidadas y llaves dentro de cadenas como "a}", y prueba JSON.parse. Si falla, sigue con el siguiente {.
Solo cuentan los objetos: un array o un número no es una respuesta válida.
Un reto más usa LIVE: la salida real de tu propio Ollama si activas «Mi Ollama», o una muestra distinta si no. Ese reto mira la estructura, no las palabras exactas.
Retos 0/5
- Lee el bloque ```json de REPLY
- Encuentra el objeto dentro de texto sin bloque
- Respeta las llaves dentro de cadenas
- Devuelve null si no hay un objeto válido
- Lee la respuesta real de tu modelo (Mi Ollama) o otra muestra
function extractJson(reply) {
// 1. prueba primero con un bloque de código delimitado
// 2. si no, recorre cada '{' y busca su '}' (las cadenas pueden contener llaves)
// 3. JSON.parse del fragmento; devuelve el primer objeto plano, o null
try {
return JSON.parse(reply);
} catch (e) {
return null;
}
}
console.log(extractJson(REPLY));Para profundizar: la referencia de Ollama (en inglés) →
¿Esto en producción, con tus datos? Hablemos 15 minutos →