Validación de datos en Kotlin: bibliotecas, enfoques y ejemplos de código

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Validación de datos en Kotlin: resumen de bibliotecas y ejemplos prácticos



La validación de datos es uno de los aspectos clave en el desarrollo de aplicaciones robustas. En Kotlin, gracias a su sintaxis concisa y su potente sistema de tipos, el proceso de verificación de datos puede ser no solo eficiente, sino también expresivo. En este artículo, revisaremos las bibliotecas populares para validación, sus capacidades y proporcionaremos ejemplos prácticos de código.



¿Por qué es necesaria la validación en Kotlin?

La validación permite:

  • Garantizar la integridad de los datos antes de procesarlos;
  • Mejorar la experiencia del usuario mediante mensajes de error claros;
  • Reducir la carga en la base de datos y la lógica del servidor;
  • Prevenir vulnerabilidades relacionadas con entradas incorrectas.


Enfoques principales para la validación

En Kotlin se pueden distinguir tres enfoques principales:

  1. Anotaciones — una forma declarativa, a menudo utilizada con Jakarta Bean Validation (anteriormente JSR-380).
  2. Validación DSL — creación de validadores mediante un lenguaje específico del dominio (por ejemplo, Konform).
  3. Enfoque funcional — uso de funciones de orden superior para componer reglas de verificación.


1. Biblioteca Konform

Konform es una biblioteca ligera para la validación de datos en Kotlin que utiliza DSL. Es ideal para verificar objetos obtenidos de JSON o formularios.

Ejemplo de uso:

import konform.*import konform.dsl.*

data class User( val name: String, val email: String, val age: Int)

fun main() { val userValidator = validation<User> { User::name required { minLength(2) hint "El nombre debe contener al menos 2 caracteres" maxLength(50) hint "El nombre no debe exceder los 50 caracteres" } User::email required { pattern(Regex("^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$")) hint "Correo electrónico inválido" } User::age required { range(18..120) hint "La edad debe estar entre 18 y 120 años" } }

val user = User("A", "invalid-email", 17) val result = userValidator.validate(user) if (result is ValidationResult.Invalid) { result.errors.forEach { (field, errors) -> println("Campo '$field': ${errors.joinToString(", ")}") } } else { println("¡Validación superada!") }}

Salida:

Campo 'name': El nombre debe contener al menos 2 caracteresCampo 'email': Correo electrónico inválidoCampo 'age': La edad debe estar entre 18 y 120 años


2. Biblioteca Kotlin Validation (KValidation)

KValidation es otra herramienta popular que proporciona tanto anotaciones como DSL. Se integra con Kotlin Serialization y admite objetos anidados.

Ejemplo con anotaciones:

import io.kvalidation.annotations.*import io.kvalidation.KValidation

@Validatabledata class Address( @NotEmpty(message = "La calle no puede estar vacía") val street: String, @Range(min = 1, max = 9999, message = "El número de casa debe estar entre 1 y 9999") val houseNumber: Int)

@Validatabledata class Person( @NotEmpty(message = "El nombre es obligatorio") @Length(min = 2, max = 100, message = "El nombre debe contener entre 2 y 100 caracteres") val name: String, @Email(message = "Correo electrónico inválido") val email: String, @Valid // validación anidada val address: Address)

fun main() { val person = Person("", "test", Address("", 0)) val violations = KValidation.validate(person) violations.forEach { violation -> println("${violatio

Recommendations