Moshi für Kotlin: Komplettguide mit Beispielen

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

Moshi für Kotlin: Komplettguide mit Beispielen

1. Was ist Moshi und warum braucht man es?

Moshi ist eine moderne Bibliothek zur JSON-Serialisierung und -Deserialisierung, entwickelt von Square. Sie ist in Kotlin und Java geschrieben, richtet sich aber primär an Kotlin-Entwickler. Moshi bietet eine leistungsstarke, typsichere und effiziente Möglichkeit, Objekte in JSON zu konvertieren und umgekehrt – mit minimalem Boilerplate-Code.

Warum Moshi? In der modernen App-Entwicklung ist die Arbeit mit JSON unverzichtbar: Datenaustausch mit REST-APIs, Speichern von Konfigurationen, Nachrichtenaustausch zwischen Komponenten. Moshi löst mehrere Kernaufgaben: automatische Konvertierung von Kotlin-Klassen in JSON (und zurück), ohne manuelle Parser schreiben zu müssen; strenge Typisierung, die Laufzeitfehler verhindert; Unterstützung für unveränderliche Objekte (data class) und sealed classes; Anpassbarkeit durch Adapter. Im Vergleich zu Gson oder Jackson bietet Moshi eine sauberere API, bessere Kotlin-Integration (z. B. Null-Sicherheit und Standardwerte) und eine kleinere Bibliotheksgröße.

Moshi ist besonders nützlich in Projekten, die Wert auf Leistung und Typsicherheit legen. Es wird aktiv in der Android-Entwicklung eingesetzt (oft zusammen mit Retrofit und OkHttp), in Serveranwendungen mit Ktor sowie in allen Kotlin-Projekten, die JSON verarbeiten. Die Bibliothek unterstützt Reflection (über das Modul moshi-kotlin) und Codegenerierung (über moshi-kotlin-codegen), sodass Sie zwischen Komfort und Leistung wählen können.

2. Installation

Moshi wird über Maven Central bereitgestellt. Fügen Sie die Abhängigkeiten in Ihre build.gradle.kts (Gradle) oder pom.xml (Maven) ein.

Gradle (Kotlin DSL)

// build.gradle.kts
dependencies {
    // Hauptbibliothek
    implementation("com.squareup.moshi:moshi:1.15.1")
    
    // Kotlin-Modul (Reflection)
    implementation("com.squareup.moshi:moshi-kotlin:1.15.1")
    
    // Codegenerierung (optional, für bessere Performance)
    ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.1")
    // oder kapt("com.squareup.moshi:moshi-kotlin-codegen:1.15.1")
}

Gradle (Groovy)

// build.gradle
dependencies {
    implementation 'com.squareup.moshi:moshi:1.15.1'
    implementation 'com.squareup.moshi:moshi-kotlin:1.15.1'
    ksp 'com.squareup.moshi:moshi-kotlin-codegen:1.15.1'
}

Maven

<dependency>
    <groupId>com.squareup.moshi</groupId>
    <artifactId>moshi</artifactId>
    <version>1.15.1</version>
</dependency>
<dependency>
    <groupId>com.squareup.moshi</groupId>
    <artifactId>moshi-kotlin</artifactId>
    <version>1.15.1</version>
</dependency>

Wichtig: Wenn Sie Codegenerierung verwenden, vergessen Sie nicht, das KSP (Kotlin Symbol Processing) oder KAPT-Plugin einzubinden. Für KSP fügen Sie in plugins hinzu:

plugins {
    id("com.google.devtools.ksp") version "1.9.22-1.0.17"
}

3. Schnellstart

Ein minimales funktionsfähiges Beispiel zeigt die grundlegende Serialisierung und Deserialisierung.

import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

// 1. Data class definieren
data class User(
    val name: String,
    val age: Int,
    val email: String?
)

fun main() {
    // 2. Moshi-Instanz mit Kotlin-Factory erstellen
    val moshi = Mosh                    

Empfehlungen