Datenserialisierung in der mobilen Entwicklung — was ist das, Formate und Funktionsprinzip

Autor: IT Sectr Veröffentlicht: 2026-03-08 Lesezeit: 8 Min.

Serialisierung ist der Prozess der Umwandlung eines Objekts oder einer Datenstruktur in ein sequenzielles Format, das für die Netzwerkübertragung oder Dateispeicherung geeignet ist. Der umgekehrte Prozess, die Deserialisierung, stellt die Daten wieder in ihren ursprünglichen Zustand zurück. Laut MDN Web Docs ist Serialisierung für jede prozessübergreifende Kommunikation notwendig. Serialisierung liegt REST-APIs, Caching und dem Datenaustausch zwischen Anwendungskomponenten zugrunde.

Wichtigste Punkte

  • Serialisierung — Umwandlung eines Objekts in einen Datenstrom zur Übertragung oder Speicherung
  • JSON — das wichtigste Textformat für REST-APIs und Webkommunikation
  • Protobuf — ein Binärformat mit maximaler Leistung und Kompaktheit
  • XML — ein strenges Format mit Validierung für Enterprise- und Android-Entwicklung
  • Formatwahl hängt von den Leistungs- und Kompatibilitätsanforderungen ab

Was ist Serialisierung?

Serialisierung ist der Prozess der Umwandlung eines im RAM befindlichen Objekts in eine lineare Folge von Bytes oder Zeichen, die über ein Netzwerk übertragen, in einer Datei gespeichert oder an einen anderen Prozess übergeben werden kann. Ohne Serialisierung wären Netzwerkkommunikation, Zustandsspeicherung und prozessübergreifende Interaktion unmöglich.

Serialisierung umfasst zwei gegenläufige Prozesse. Der Vorwärtsprozess (Serialisierung) verpackt Daten in ein Übertragungsformat. Der Rückwärtsprozess (Deserialisierung) stellt die Daten wieder als Objekt her. Deserialisierung ist für die Sicherheit kritisch: falsche Eingabedaten können zu Schwachstellen in der Anwendung führen.

In der mobilen Anwendungsentwicklung wird Serialisierung überall eingesetzt: Senden von Anfragen an den Server und Verarbeiten von Antworten, Speichern des Anwendungszustands bei Bildschirmdrehung, Zwischenspeichern von Daten auf der Festplatte und Übergeben von Daten zwischen Bildschirmen über Intent (Android) oder Segue (iOS).

Hauptaufgaben der Serialisierung

  • Netzwerkkommunikation — Datenübertragung zwischen Client und Server
  • Zustandsspeicherung — Speichern und Wiederherstellen von Anwendungsdaten
  • Caching — Speichern von Anforderungsergebnissen für den Offline-Zugriff
  • Plattformübergreifend — Datenaustausch zwischen Systemen in verschiedenen Sprachen
  • Protokollierung — Serialisierung von Objekten zum Schreiben in Logs

Wichtige Serialisierungsformate

Serialisierungsformate werden in Text- und Binärformate unterteilt. Textformate (JSON, XML) sind für Menschen lesbar und benötigen keine Werkzeuge zur Anzeige. Binärformate (Protobuf, FlatBuffers, MessagePack) sind kompakter und schneller, aber ohne Deserialisierung nicht lesbar. Die Formatwahl ist ein Kompromiss zwischen Leistung und Debugging-Komfort.

Neben JSON, XML und Protobuf gibt es spezialisierte Formate: FlatBuffers von Google für Spiele und AR, MessagePack — eine kompakte binäre Alternative zu JSON, Avro von Apache für Big Data in Kafka, YAML — ein Konfigurationsformat mit Kommentarunterstützung.

Format Typ Schema Größe Geschwindigkeit
JSON Text Optional Mittel Mittel
XML Text XSD Groß Niedrig
Protobuf Binär Erforderlich Klein Hoch
FlatBuffers Binär Erforderlich Klein Maximal
MessagePack Binär Nein Klein Hoch
Avro Binär JSON Schema Klein Hoch

Serialisierung in der mobilen Entwicklung

Serialisierung auf mobilen Plattformen hat ihre Besonderheiten: begrenzter Datenverkehr, schwächere Prozessoren und die Notwendigkeit, den Zustand bei Bildschirmdrehungen zu erhalten. Auf Android werden Gson, Moshi, Kotlinx Serialization verwendet. Auf iOS — Codable, JSONSerialization, PropertyListEncoder. Die richtige Bibliothekswahl beeinflusst die Anwendungsleistung entscheidend.

Kotlinx Serialization ist eine moderne Bibliothek von JetBrains für Kotlin Multiplatform Mobile. Sie unterstützt JSON, Protobuf, CBOR und benutzerdefinierte Formate. Die Codegenerierung erfolgt zur Kompilierungszeit über das Kotlin Serialization Plugin und gewährleistet hohe Leistung ohne Reflexion.

Kotlinx Serialization (Kotlin Multiplatform)

Die Bibliothek Kotlinx Serialization verwendet die Annotation @Serializable für Klassen und ein Compiler-Plugin zum Generieren von Serialisierern. Dies gewährleistet hohe Leistung und Typsicherheit. Das Standardformat ist JSON, aber andere Formate werden über zusätzliche Module unterstützt.

kotlin
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
import kotlinx.serialization.encodeToString
import kotlinx.serialization.decodeFromString

@Serializable
data class Project(
    val id: Int,
    val name: String,
    val platforms: List<String>,
    val active: Boolean
)

val json = Json {
    prettyPrint = true
    ignoreUnknownKeys = true
    encodeDefaults = true
}

fun main() {
    val project = Project(1, "MobileApp",
        listOf("Android", "iOS"), true)

    // Serialisierung
    val jsonString = json.encodeToString(project)

    // Deserialisierung
    val restored = json.decodeFromString<Project>(jsonString)
}

Codable auf iOS (Swift)

Das Codable-Protokoll ist der integrierte Serialisierungsmechanismus von Swift. Es kombiniert die Protokolle Encodable (Serialisierung) und Decodable (Deserialisierung). JSONEncoder und JSONDecoder verarbeiten automatisch verschachtelte Strukturen, Arrays, optionale Werte und benutzerdefinierte Schlüssel über CodingKeys.

swift
import Foundation

struct AppConfig: Codable {
    let appName: String
    let version: String
    let features: [String]
    let isProduction: Bool
}

let config = AppConfig(
    appName: "MyApp",
    version: "2.1.0",
    features: ["push", "analytics", "offline"],
    isProduction: true
)

let encoder = JSONEncoder()
encoder.outputFormatting = [.prettyPrinted, .sortedKeys]

guard let data = try? encoder.encode(config) else { return }
let jsonString = String(data: data, encoding: .utf8)

Leistung und Formatvergleich

Die Leistung von Serialisierungsformaten wird anhand von drei Metriken bewertet: Nachrichtengröße, Serialisierungsgeschwindigkeit und Deserialisierungsgeschwindigkeit. Für mobile Anwendungen sind alle drei kritisch: Die Größe beeinflusst den Datenverkehr und die Ladezeit, die Geschwindigkeit beeinflusst die Reaktionsfähigkeit der Oberfläche und die Startzeit der Anwendung.

Protobuf und FlatBuffers zeigen dank binärer Darstellung die besten Ergebnisse. FlatBuffers zeichnet sich dadurch aus, dass es keinen separaten Deserialisierungsschritt erfordert — Daten werden direkt aus dem binären Puffer gelesen, was es ideal für Spiele und AR-Anwendungen mit minimalen Latenzanforderungen macht. JSON bleibt trotz schlechterer Leistung aufgrund seiner Einfachheit und Universalität das beliebteste Format für REST-APIs.

Szenario Empfohlenes Format Grund
REST-API JSON Universalität, Lesbarkeit, Unterstützung
Mikroservices Protobuf Kompaktheit, Geschwindigkeit, gRPC
Spiele / AR FlatBuffers Zero-Copy, minimale Latenz
Big Data Avro Kompatibilität mit Kafka und Hadoop
Konfiguration YAML Kommentare, Lesbarkeit
Android-Layouts XML Plattformstandard

Vergleichstests

Praktische Tests mit einem Datensatz von 1000 Benutzerobjekten zeigen: Protobuf erstellt Nachrichten mit 12 KB (JSON — 85 KB, XML — 120 KB). Serialisierungszeit: Protobuf — 2 ms, JSON — 8 ms, XML — 25 ms. Diese Zahlen machen Binärformate für Hochlastsysteme und mobile Anwendungen mit begrenztem Datenverkehr bevorzugt.

Beispiele für Datenserialisierung

Die Beispiele zeigen die Serialisierung desselben Objekts in verschiedenen Formaten. Dies hilft, Größe und Lesbarkeit visuell zu vergleichen. Dasselbe User-Objekt wird in JSON, XML und Protobuf serialisiert — es ist deutlich sichtbar, dass JSON kompakter als XML ist und Protobuf am kompaktesten und dabei unlesbar ist.

Ein Objekt in drei Formaten

JSON — minimalistische Syntax, Schlüssel in Anführungszeichen, Werte verschiedener Typen. Benötigt 80 Zeichen. Lesbarkeit hoch, visuelle Struktur klar. Geeignet für APIs, bei denen Entwicklungs- und Debugging-Geschwindigkeit wichtig sind.

XML — jedes Element ist in öffnende und schließende Tags gehüllt. Benötigt 150 Zeichen. Lesbarkeit mittel, Struktur streng. Geeignet für Dokumentenworkflows und Systeme, die eine XSD-Validierung erfordern.

Protobuf — binär, 32 Bytes für diese Daten. Unlesbar — erfordert Deserialisierung zur Anzeige. Die minimale Größe macht es ideal für Hochlastsysteme und mobile Anwendungen.

json
{
  "id": 42,
  "name": "IT Sectr",
  "email": "team@itsectr.com",
  "role": "admin",
  "active": true
}
xml
<user>
    <id>42</id>
    <name>IT Sectr</name>
    <email>team@itsectr.com</email>
    <role>admin</role>
    <active>true</active>
</user>

Best Practices für Serialisierung

Best Practices helfen, typische Fehler zu vermeiden und die richtige Serialisierungsstrategie für das Projekt zu wählen. Die Befolgung dieser Empfehlungen verbessert Leistung, Sicherheit und Wartbarkeit des Codes.

Empfehlungen für die mobile Entwicklung

  1. Format nach Szenario wählen — JSON für REST-APIs, Protobuf für gRPC und Mikroservices
  2. Java Serializable vermeiden — langsamer und unsicherer Mechanismus, Kotlinx Serialization oder Moshi verwenden
  3. Unbekannte Schlüssel ignorieren — Parser so konfigurieren, dass Felder, die nicht im Modell vorhanden sind, übersprungen werden
  4. Deserialisierte Daten zwischenspeichern — erneutes Parsen derselben Daten vermeiden
  5. Eingabedaten validieren — bei der Deserialisierung Grenzen und Typen prüfen

Sicherheit und Serialisierung

Serialisierungssicherheit ist ein kritisch wichtiger Aspekt, insbesondere bei der Deserialisierung von Daten aus nicht vertrauenswürdigen Quellen. Deserialisierungsangriffe können zur Remote-Code-Ausführung (RCE) führen, einer der gefährlichsten Schwachstellen in Web- und Mobilanwendungen. Die bekanntesten Fälle betreffen Java Serializable und Python pickle.

Protobuf und JSON haben einen integrierten Schutz gegen solche Angriffe, da sie nur mit Daten arbeiten, nicht mit beliebigen Objekten. Java Serializable kann dagegen jede im Klassenpfad verfügbare Klasse wiederherstellen, was es für den Empfang von Daten aus externen Quellen gefährlich macht. Auf Android wird empfohlen, Kotlinx Serialization oder Moshi anstelle der standardmäßigen Java-Serialisierung zu verwenden.

Zusätzliche Sicherheitsmaßnahmen: Legen Sie ein Limit für die Größe der Eingabedaten fest, validieren Sie das Schema vor der Deserialisierung, vertrauen Sie nicht dem Content-Type aus HTTP-Headern, verwenden Sie eine Whitelist für zulässige Klassen. Aktualisieren Sie Serialisierungsbibliotheken regelmäßig, da Schwachstellen regelmäßig entdeckt und behoben werden.

Häufig gestellte Fragen

Was ist der Unterschied zwischen Serialisierung und Marshalling?

Serialisierung wandelt ein Objekt in eine Byte-Sequenz um, während Marshalling Daten zwischen verschiedenen Adressräumen unter Beibehaltung von Typen und Struktur überträgt. Marshalling enthält Serialisierung als Teil des Prozesses, kann aber auch Referenzcodierung und Speicherverwaltung umfassen.

Welches Serialisierungsformat ist am schnellsten?

Googles FlatBuffers bietet maximale Geschwindigkeit dank Zero-Copy-Deserialisierung — Daten werden direkt aus dem binären Puffer ohne Transformation gelesen. Protobuf liegt auf Platz zwei, JSON auf Platz drei. XML ist das langsamste Format unter den gängigen.

Was für Android wählen: Gson, Moshi oder Kotlinx Serialization?

Kotlinx Serialization ist die beste Wahl für neue Kotlin-Projekte: Compiler-Generierung, Kotlin-Multiplatform-Unterstützung, Null-Sicherheit. Moshi ist eine gute Wahl für Java-Projekte, leistungsfähiger als Gson. Gson ist die einfachste Bibliothek für den Einstieg, aber langsamer und verwendet Reflexion.

Wie serialisiert man ein Objekt mit zirkulären Referenzen?

Zirkuläre Referenzen führen während der Serialisierung zu unendlicher Rekursion. Lösungen: Verwenden Sie ID-Referenzen anstelle direkter Objektreferenzen, wenden Sie spezialisierte Serialisierungsadapter an (z. B. @JsonIgnore in Jackson), oder gestalten Sie das Datenmodell neu, um Zyklen zu vermeiden.

Beeinflusst Serialisierung die Anwendungssicherheit?

Ja, insbesondere die Deserialisierung nicht vertrauenswürdiger Daten. Deserialisierungsschwachstellen können zur Remote-Code-Ausführung führen. Empfehlungen: Deserialisieren Sie keine Daten aus nicht vertrauenswürdigen Quellen, verwenden Sie eine Whitelist von Klassen bei der Deserialisierung und validieren Sie das Datenschema vor der Verarbeitung.

Zusammenfassung

  • Serialisierung wandelt Objekte in einen Datenstrom zur Übertragung und Speicherung um, Deserialisierung stellt sie wieder her
  • JSON ist der Standard für REST-APIs, XML für Dokumentenworkflows, Protobuf für Mikroservices und Hochlast
  • Binärformate (Protobuf, FlatBuffers) sind 3–10 Mal kompakter und schneller als Textformate
  • Auf Android wird Kotlinx Serialization empfohlen, auf iOS — integriertes Codable
  • Caching deserialisierter Daten reduziert die CPU-Last und beschleunigt die Anwendung
  • Deserialisierungssicherheit ist kritisch — Eingabedaten validieren und Whitelist verwenden
  • Formatwahl ist ein Kompromiss zwischen Lesbarkeit, Leistung und Kompatibilität

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch