Validación de datos en Kotlin: bibliotecas y enfoques (Kotlin, Java)

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: revisión de bibliotecas y ejemplos prácticos



La validación de datos es uno de los aspectos clave en el desarrollo de aplicaciones robustas. En el ecosistema de Kotlin existen varias bibliotecas potentes que permiten describir reglas de validación de forma declarativa, evitando estructuras condicionales complejas. En este artículo, analizaremos tres herramientas populares: Konad, Valiktor y Kvalidation. Aprenderá cómo funcionan y verá ejemplos de código para tareas reales.



1. Konad — validación funcional



Konad (Kotlin Validation) utiliza el concepto de mónadas y programación funcional. En lugar de lanzar excepciones, la biblioteca devuelve Validated<E, A>, donde E es el tipo de error y A es el valor exitoso. Esto permite acumular errores y manejarlos sin efectos secundarios.



Instalación

// build.gradle.ktsdependencies {    implementation("io.github.mkobit:konad:0.3.0")}


Ejemplo de uso

import konad.*

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

fun validateUser(user: User): Validated<String, User> { return Validated.valid(user) .validate { it.name.isNotBlank() } { "El nombre no puede estar vacío" } .validate { it.age in 18..99 } { "La edad debe estar entre 18 y 99" }}

fun main() { val user = User("Alice", 25) val result = validateUser(user)

when (result) { is Valid -> println("Usuario válido: ${result.value}") is Invalid -> println("Errores: ${result.errors.joinToString(", ")}") }}


Ventajas de Konad:

  • Estilo funcional puro sin excepciones
  • Acumulación de todos los errores de validación
  • Composición de validadores


2. Valiktor — validación declarativa con API fluida



Valiktor ofrece un DSL intuitivo para describir reglas. La biblioteca admite objetos anidados, colecciones y mensajes de error personalizados. Es una de las herramientas más populares para Kotlin.



Instalación

// build.gradle.ktsdependencies {    implementation("org.valiktor:valiktor-core:0.12.0")}


Ejemplo con objetos anidados

import org.valiktor.*import org.valiktor.functions.*

data class Address(val city: String, val zip: String)data class Person(val name: String, val email: String, val address: Address)

fun validatePerson(person: Person) { validate(person) { validate(Person::name).isNotBlank().hasSize(min = 2, max = 50) validate(Person::email).isEmail() validate(Person::address) { validate(Address::city).isNotBlank() validate(Address::zip).matches("\\\\d{5}".toRegex()) } }}

fun main() { val person = Person("", "correo-invalido", Address("", "123")) try { validatePerson(person) } catch (e: ConstraintViolationException) { e.constraintViolations.forEach { violation -> println("${violation.property}: ${violation.message}") } }}


Características de Valiktor:

  • Soporte completo para objetos y listas anidadas
  • Mensajes de error localizados
  • Integración con Spring Boot y Ktor


3. Kvalidation — validación modular basada en anotaciones



Kvalidation (anteriormente Koptional) proporciona tanto un enfoque basado en anotaciones como programático. La biblioteca es especialmente útil para validar datos de entrada en APIs REST.



Instalación

// build.gradle.ktsdependencies {    implementation("com.willowtreeapps:kvalidation:1.0.0")}


Ejemplo con anotaciones

import com.willowtreeapps.kvalidation.annotations.*import com.willowtreeapps.kvalidation.Validator

data class Product( @field:NotBlank(message = "Pro

Recommendations