Validar respuestas JSON de IA en Android con Kotlin
Diseña respuestas estructuradas, valida campos y evita fallos al convertir texto de IA en datos.
Convertir la respuesta generada en una estructura comprobable antes de mostrarla o guardarla.
Por qué es importante
Un modelo generativo puede producir JSON incompleto, cambiar nombres de propiedades o envolver el resultado en texto adicional. La salida de IA es información no confiable: incluso con instrucciones estrictas, siempre necesitas validación del lado del cliente o servidor. En este ejemplo se espera un objeto con dos propiedades y se comprueban valores permitidos.
Requisitos
- Android Studio y un proyecto Kotlin con acceso a una respuesta de IA de prueba.
- Una biblioteca de serialización compatible con tu proyecto, como kotlinx.serialization; habilita su plugin y dependencias según la documentación oficial.
Trabaja en un proyecto de pruebas. Revisa las versiones y condiciones específicas de la documentación oficial, ya que las APIs y las políticas evolucionan.
Implementación
Define un contrato pequeño: {"resumen": texto, "categoria": texto}…
Define un contrato pequeño: {"resumen": texto, "categoria": texto}. Escribe los nombres y restricciones antes de diseñar el prompt. Evita solicitar campos que luego no usarás.
Solicita a tu proveedor un resultado estructurado si…
Solicita a tu proveedor un resultado estructurado si el modelo y SDK lo permiten. Añade una instrucción que prohíba explicaciones y bloques Markdown alrededor del JSON.
Deserializa en una clase Kotlin. Captura SerializationException y…
Deserializa en una clase Kotlin. Captura SerializationException y no muestres una pantalla vacía si la generación no coincide con el esquema.
Valida reglas de negocio tras deserializar: resumen no…
Valida reglas de negocio tras deserializar: resumen no vacío, longitud aceptable y categoría dentro de un conjunto conocido. Rechaza valores inesperados.
Muestra un estado de error recuperable y permite…
Muestra un estado de error recuperable y permite reintentar. Registra métricas técnicas sin almacenar prompts, respuestas privadas ni datos personales.
Prueba contenido válido, JSON truncado, categorías desconocidas, valores…
Prueba contenido válido, JSON truncado, categorías desconocidas, valores vacíos y texto que parece JSON pero no lo es.
Fragmento de referencia
@Serializable
data class RespuestaIA(val resumen: String, val categoria: String)
fun validar(texto: String): RespuestaIA? = runCatching {
Json.decodeFromString<RespuestaIA>(texto)
}.getOrNull()?.takeIf {
it.resumen.isNotBlank() && it.resumen.length <= 300 &&
it.categoria in setOf("educacion", "productividad", "otros")
}Ejemplo educativo: cuando se indique, añade las importaciones, dependencias, claves de prueba o clases de tu proyecto. No se presenta como proyecto Android completo y compilado.
Ponlo a prueba
Prueba cinco cadenas de texto: una correcta, una sin campo categoria, una vacía, una con HTML y otra con categoría no reconocida. Documenta cómo reacciona tu interfaz.
Lista de comprobación
- La implementación cumple el objetivo: convertir la respuesta generada en una estructura comprobable antes de mostrarla o guardarla.
- El comportamiento se verificó con datos de prueba y se documentaron los casos de fallo.
- Los recursos, dependencias y políticas se comprobaron contra las referencias oficiales.
- No se registran datos sensibles ni se da por probada una mejora sin evidencia.
Errores habituales
- Confundir «JSON bien formado» con «información segura»; valida también tipos y reglas de negocio.
- Pedir reintentos ilimitados ante respuestas erróneas incrementa costos.
- No hagas parsing manual con split o expresiones regulares para JSON.
¿Es suficiente escribir “responde solo JSON”?
No. Los modelos pueden incumplir la instrucción. Emplea esquemas compatibles, deserialización estricta y validación adicional.
Referencias para ampliar
Consulta las versiones, limitaciones y requisitos vigentes antes de integrar los ejemplos en producción.