JSON (JavaScript Object Notation) ist ein textbasiertes Datenaustauschformat, das auf der JavaScript-Objektsyntax basiert. Es wird überall verwendet: von REST-APIs und Konfigurationsdateien bis hin zur Datenspeicherung in Datenbanken und mobilen Anwendungen. Laut der offiziellen JSON-Website ist das Format sprachunabhängig und wird von praktisch allen modernen Plattformen unterstützt. JSON ist zum De-facto-Standard für die Datenübertragung zwischen Client und Server geworden.
Wichtige Punkte
JSON ist ein Textformat zur Darstellung strukturierter Daten, basierend auf der JavaScript-Syntax. Trotz seiner Herkunft aus JavaScript ist das Format völlig sprachunabhängig — Parser und Serialisierer existieren für alle gängigen Programmiersprachen.
Die Geschichte von JSON begann in den frühen 2000er Jahren, als Douglas Crockford eine Teilmenge der JavaScript-Syntax für den Datenaustausch extrahierte. Im Jahr 2013 wurde das Format als ECMA-404 und später als ISO/IEC 21778:2017 standardisiert. Der Name steht für JavaScript Object Notation.
Der Hauptvorteil von JSON ist seine minimalistische Syntax. Zur Beschreibung von Daten werden nur sechs Typen verwendet: Zeichenkette, Zahl, Boolean, null, Array und Objekt. Dies ist ausreichend, um jede in Anwendungen verwendete Datenstruktur darzustellen.
Die JSON-Syntax ist äußerst einfach: Daten werden als Schlüssel-Wert-Paare dargestellt, wobei der Schlüssel eine Zeichenkette in doppelten Anführungszeichen und der Wert einer von sechs Basistypen ist. Objekte werden in geschweifte Klammern gesetzt, Arrays in eckige Klammern. Zeichenketten müssen doppelte Anführungszeichen verwenden; einfache Anführungszeichen sind nicht erlaubt.
Zahlen in JSON können ganzzahlig oder gleitkommabasiert, positiv oder negativ, mit Exponentenschreibweise sein. Boolesche Werte werden durch die Literale true und false dargestellt, das Fehlen eines Werts durch null. Arrays enthalten eine geordnete Menge von Werten beliebigen Typs, einschließlich verschachtelter Arrays und Objekte.
{
"name": "JSON",
"type": "text",
"version": 2024,
"flexible": true,
"extensions": null,
"languages": [
"JavaScript",
"Python",
"Java"
],
"nested": {
"info": "Unterstützung für Verschachtelung"
}
}
| Typ | Beispiel | Beschreibung |
|---|---|---|
| Zeichenkette | „Text“ |
In doppelten Anführungszeichen, mit Escape-Sequenzen |
| Zahl | 42 |
Ganzzahl, Gleitkomma, Exponent |
| Boolean | true |
true oder false — ohne Anführungszeichen |
| null | null |
Fehlen eines Wertes |
| Objekt | {} |
Ungeordnete Menge von Schlüssel-Wert-Paaren |
| Array | [] |
Geordnete Liste von Werten |
JSON ist das primäre Datenaustauschformat für REST-APIs in der Mobil- und Webentwicklung. Der Server sendet JSON im Antwortbody, der Client im Anforderungsbody. Der Standard-Content-Type-Header für JSON ist application/json.
Moderne REST-APIs verwenden JSON, um alle Arten von Daten zu übertragen: von einfachen Listen bis zu komplexen verschachtelten Strukturen mit Beziehungen zwischen Entitäten. Client-Bibliotheken (wie Axios in JavaScript oder Retrofit auf Android) serialisieren und deserialisieren JSON automatisch und befreien den Entwickler von manueller Analyse.
Ein wichtiger Vorteil von JSON in REST-APIs ist die Möglichkeit der partiellen Datenübertragung (Teilantwort) über Abfrageparameter sowie die Unterstützung verschachtelter Ressourcen ohne zusätzliche Serveranfragen.
JSON-Parsing auf mobilen Plattformen erfolgt mit integrierten Werkzeugen. Android verwendet Gson von Google oder Moshi von Square, iOS verwendet das Codable-Protokoll mit JSONDecoder. Jede Plattform bietet praktische Werkzeuge zur Konvertierung von JSON in native Objekte und zurück.
Auf Android ist der gängige Ansatz die Verwendung von Gson oder Moshi. Definieren Sie einfach eine Datenklasse mit @SerializedName-Annotationen und rufen Sie fromJson zur Deserialisierung auf. Die Bibliothek ordnet automatisch JSON-Feldnamen den Klasseneigenschaften zu.
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
data class User(
@SerializedName("id") val id: Int,
@SerializedName("name") val name: String,
@SerializedName("email") val email: String
)
fun parseJson(jsonString: String): User {
val gson = Gson()
return gson.fromJson(jsonString, User::class.java)
}
Auf iOS wird das integrierte Codable-Protokoll mit JSONDecoder verwendet. Die Datenstruktur wird als struct deklariert, das Codable entspricht, wonach JSON mit einer einzigen Zeile geparst wird. JSONEncoder führt die umgekehrte Serialisierung durch — konvertiert ein Objekt in JSON zum Senden an den Server.
import Foundation
struct User: Codable {
let id: Int
let name: String
let email: String
}
func parseJSON(from data: Data) throws -> User {
let decoder = JSONDecoder()
return try decoder.decode(User.self, from: data)
}
JSON und XML sind die beiden Hauptformate zur Übertragung strukturierter Daten. JSON punktet mit Einfachheit und Leistung, XML mit Strenge und Validierung. Die Wahl zwischen ihnen hängt von den Projektanforderungen ab: REST-APIs verwenden häufiger JSON, komplexe Dokumente mit Schemata verwenden XML.
XML erfordert schließende Tags für jedes Element, was die Datengröße im Vergleich zu JSON um das 2- bis 3-fache erhöht. Gleichzeitig unterstützt XML Namensräume, XSD-Schemata, Attribute und XSLT-Transformation, was es für Dokumentenverwaltung und Unternehmenssystemintegration leistungsfähiger macht.
| Merkmal | JSON | XML |
|---|---|---|
| Syntax | Minimalistisch, Schlüssel-Wert | Tag-basiert, öffnende und schließende Tags |
| Datengröße | Kompakt | 2-3 mal größer als JSON |
| Datentypen | Sechs Basistypen | Nur Text, Typen über Schemata |
| Validierung | Keine integrierte, über JSON Schema | XSD — streng und ausgereift |
| Namensräume | Keine | Vollständige Namespace-Unterstützung |
| Parsing-Geschwindigkeit | Hoch | Niedriger aufgrund der Komplexität |
Beispiele zeigen typische JSON-Operationen in der mobilen Entwicklung: Parsen von API-Antworten, Erstellen von JSON zum Senden und Verarbeiten verschachtelter Strukturen. Das Verständnis dieser Muster ist für jeden Entwickler mobiler Anwendungen unerlässlich.
In JavaScript konvertiert JSON.stringify ein Objekt in einen JSON-String. Das zweite Argument kann ein Array von Schlüsseln für die selektive Serialisierung oder eine Ersetzungsfunktion sein. Das dritte Argument legt die Einrückung für die Formatierung fest.
interface Order {
id: string;
items: OrderItem[];
total: number;
createdAt: string;
}
const order: Order = {
id: 'ord_001',
items: [{ product: 'phone', quantity: 2 }],
total: 1599.98,
createdAt: '2026-07-03T10:00:00Z'
};
const jsonString = JSON.stringify(order, null, 2);
In Kotlin mit der Bibliothek Moshi werden verschachtelte JSON-Objekte durch verschachtelte Datenklassen behandelt. Die @Json-Annotation gibt den JSON-Feldnamen an, wenn er sich vom Eigenschaftsnamen der Klasse unterscheidet. Arrays werden als List mit dem Elementtyp dargestellt.
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
data class ApiResponse(
val status: String,
val data: List<Product>,
val pagination: Pagination
)
data class Product(
val id: Int,
val title: String,
val price: Double
)
data class Pagination(
val page: Int,
val total: Int
)
val moshi = Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
JSON Schema ist eine Sprache zur Beschreibung der Struktur eines JSON-Dokuments, ähnlich wie XSD für XML. Mit JSON Schema können Sie Pflichtfelder, Datentypen, Wertebereiche, Zeichenkettenmuster und verschachtelte Strukturen angeben. Die Schema-Validierung erkennt Datenfehler, bevor sie in der Anwendung verarbeitet werden.
JSON Schema wird häufig in OpenAPI (Swagger) zur Dokumentation von REST-APIs, in Eingabedaten-Validierungsformularen und beim Testen verwendet. Die Schemadatei selbst ist ein JSON-Dokument, sodass standardmäßige JSON-Parser sie lesen können. Für alle gängigen Programmiersprachen gibt es Online-Validatoren und Bibliotheken.
In der mobilen Entwicklung wird JSON Schema zur Validierung von Serverantworten während des Testens und zur Überprüfung von Konfigurationsdateien verwendet. Bibliotheken wie network-validator auf Android und json-schema-validator ermöglichen es, die Validierung direkt in den Entwicklungsprozess einzubetten und Fehler frühzeitig zu verhindern.
Häufig gestellte Fragen
JSON unterstützt sechs Typen: Zeichenkette (in doppelten Anführungszeichen), Zahl (ganzzahlig und gleitkommabasiert), Boolean (true/false), null, Objekt (Schlüssel-Wert-Paare in {}) und Array (Liste von Werten in []). Dies ist für jede Datenstruktur in Anwendungen ausreichend.
Nein, der JSON-Standard unterstützt keine Kommentare. Wenn Sie Kommentare benötigen, verwenden Sie JSON5 (erweitertes JSON) oder fügen Sie ein Beschreibungsfeld hinzu, z. B. „_comment“: „Erklärung“. Einige Werkzeuge wie VS Code unterstützen Kommentare in JSON-Konfigurationsdateien, aber dies ist eine nicht standardmäßige Erweiterung.
JSONB ist ein binäres Speicherformat für JSON in PostgreSQL. Im Gegensatz zu textuellen JSON ist JSONB schneller in der Verarbeitung, unterstützt Indizierung (GIN-Indizes) und garantiert Schlüsseleindeutigkeit. Allerdings benötigt JSONB aufgrund der hinzugefügten Metadaten mehr Speicherplatz auf der Festplatte.
Verwenden Sie JSONLint (jsonlint.com) für eine schnelle Überprüfung, die integrierte JSON.parse()-Funktion in JavaScript mit try-catch oder IDE-Plugins. Die Validierung umfasst die Überprüfung korrekter Anführungszeichen, Klammer-schließung und Typkonformität. Für komplexe Schemata verwenden Sie JSON Schema Validator.
Es gibt keine Begrenzung in der JSON-Spezifikation. In der Praxis wird die Größe durch den Gerätespeicher und die Parser-Fähigkeiten begrenzt. Für mobile Anwendungen wird empfohlen, 1-2 MB pro Antwort nicht zu überschreiten und für große Daten Paginierung oder Streaming zu verwenden.
Zusammenfassung
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.
Lesen Sie auch