Datenvalidierung in Kotlin: Bibliotheken, Ansätze und Codebeispiele

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Datenvalidierung in Kotlin: Überblick über Bibliotheken und praktische Beispiele



Datenvalidierung ist einer der Schlüsselaspekte bei der Entwicklung zuverlässiger Anwendungen. In Kotlin kann der Prozess der Datenprüfung dank seiner prägnanten Syntax und des leistungsstarken Typsystems nicht nur effizient, sondern auch ausdrucksstark sein. In diesem Artikel betrachten wir beliebte Bibliotheken zur Validierung, ihre Möglichkeiten und geben praktische Codebeispiele.



Warum ist Validierung in Kotlin notwendig?

Validierung ermöglicht:

  • Sicherstellung der Datenintegrität vor der Verarbeitung;
  • Verbesserung der Benutzererfahrung durch verständliche Fehlermeldungen;
  • Reduzierung der Belastung von Datenbank und Serverlogik;
  • Verhinderung von Schwachstellen durch fehlerhafte Eingaben.


Hauptansätze zur Validierung

In Kotlin lassen sich drei Hauptansätze unterscheiden:

  1. Annotationen — ein deklarativer Ansatz, der häufig mit Jakarta Bean Validation (früher JSR-380) verwendet wird.
  2. DSL-Validierung — Erstellung von Validatoren mittels einer domänenspezifischen Sprache (z. B. Konform).
  3. Funktionaler Ansatz — Verwendung von Funktionen höherer Ordnung zur Komposition von Prüfregeln.


1. Die Bibliothek Konform

Konform ist eine leichte Bibliothek zur Datenvalidierung in Kotlin, die DSL verwendet. Sie eignet sich ideal zur Überprüfung von Objekten aus JSON oder Formularen.

Anwendungsbeispiel:

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 "Name muss mindestens 2 Zeichen enthalten" maxLength(50) hint "Name darf maximal 50 Zeichen lang sein" } User::email required { pattern(Regex("^[\\\\w.-]+@[\\\\w.-]+\\\\.\\\\w{2,}$")) hint "Ungültige E-Mail-Adresse" } User::age required { range(18..120) hint "Alter muss zwischen 18 und 120 Jahren liegen" } }

val user = User("A", "invalid-email", 17) val result = userValidator.validate(user) if (result is ValidationResult.Invalid) { result.errors.forEach { (field, errors) -> println("Feld '$field': ${errors.joinToString(", ")}") } } else { println("Validierung bestanden!") }}

Ausgabe:

Feld 'name': Name muss mindestens 2 Zeichen enthaltenFeld 'email': Ungültige E-Mail-AdresseFeld 'age': Alter muss zwischen 18 und 120 Jahren liegen


2. Die Bibliothek Kotlin Validation (KValidation)

KValidation ist ein weiteres beliebtes Werkzeug, das sowohl Annotationen als auch DSL bietet. Es integriert sich mit Kotlin Serialization und unterstützt verschachtelte Objekte.

Beispiel mit Annotationen:

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

@Validatabledata class Address( @NotEmpty(message = "Straße darf nicht leer sein") val street: String, @Range(min = 1, max = 9999, message = "Hausnummer muss zwischen 1 und 9999 liegen") val houseNumber: Int)

@Validatabledata class Person( @NotEmpty(message = "Name ist erforderlich") @Length(min = 2, max = 100, message = "Name muss zwischen 2 und 100 Zeichen lang sein") val name: String, @Email(message = "Ungültige E-Mail-Adresse") val email: String, @Valid // verschachtelte Validierung val address: Address)

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

Empfehlungen