camelCase vs. snake_case: Welche JSON-Feldnamen sind besser?

Oliver Kingsley

Oliver Kingsley

17 December 2025

camelCase vs. snake_case: Welche JSON-Feldnamen sind besser?

Im architektonischen Design verteilter Systeme sind APIs nicht nur Kanäle für die Systeminteraktion; sie sind Verträge, die verschiedene Tech-Stacks, Organisationskulturen und sogar Entwicklungszeiten miteinander verbinden. Innerhalb der Design-Details von RESTful APIs entfacht ein scheinbar kleines Thema endlose Debatten: Sollten JSON-Feldnamen camelCase oder snake_case verwenden?

Dies ist nicht nur eine ästhetische Wahl. Es berührt die „Impedanzanpassung“ zwischen Backend-Persistenzschichten und Frontend-Präsentationsschichten, betrifft die Serialisierungsleistung, die Effizienz der Netzwerkübertragung, die Developer Experience (DX) und die kognitive Psychologie.

Basierend auf der Geschichte der Programmiersprachen, den zugrunde liegenden technischen Implementierungsmechanismen und den architektonischen Entscheidungen von Branchenriesen wie Google und Stripe, bietet dieser Artikel einen Expertenleitfaden für Entscheidungen.

Button

1. Historische Ursprünge: Eine semiotische Wahl

Um diese Debatte zu verstehen, müssen wir die Entwicklung der Computersprachen zurückverfolgen. Namenskonventionen entstanden nicht aus dem Nichts; sie sind Produkte von Hardwarebeschränkungen und Gemeinschaftskulturen bestimmter Epochen.

Der Ursprung von snake_case: C und die Unix-Philosophie

Die Popularität von snake_case (z.B. user_id) reicht bis in die 1970er Jahre zurück, zu C und Unix. Obwohl frühe Tastaturen (wie das Teletype Model 33) Umschalttasten hatten, waren viele frühe Compiler nicht zwischen Groß- und Kleinschreibung zu unterscheiden. Um Wörter auf Bildschirmen mit niedriger Auflösung klar zu unterscheiden, führten Programmierer den Unterstrich ein, um Leerzeichen in der natürlichen Sprache zu simulieren. Diese Gewohnheit wurde tief in den SQL-Datenbankstandards verwurzelt. Bis heute ist der Standard-Spaltennamenstil für PostgreSQL und MySQL snake_case, was die Grundlage für die zukünftige Abbildungsreibung zwischen APIs und Datenbanken legte.

Der Aufstieg von camelCase: Die Hegemonie von Java und JavaScript

camelCase (z.B. userId) entstand mit der Objektorientierten Programmierung (Smalltalk, C++, Java). Java etablierte den Industriestandard „PascalCase für Klassen, camelCase für Methoden/Variablen“. Der entscheidende Wendepunkt war die Geburt von JavaScript. Obwohl JSON aus JS-Objektliteralen entstand, übernahm die JS-Standardbibliothek (z.B. getElementById) durchgängig camelCase. Als AJAX und JSON XML als dominante Datenaustauschformate ablösten, erlangte camelCase im Web-Bereich einen „nativen“ Status.


2. Kernkonflikt: Impedanzanpassung von Tech Stacks

Wenn Daten zwischen verschiedenen Sprachen fließen, stoßen sie unweigerlich auf eine „Impedanzanpassung“.

Die Backend-Perspektive (Python/Ruby/SQL)

Im Backend empfehlen die Python (PEP 8) und Ruby Communities dringend snake_case.

class UserProfile(BaseModel):
    first_name: str  # Python-Konvention
    last_name: str

Wenn die API camelCase vorschreibt, müssen Sie Aliase oder Konverter in der Serialisierungsschicht konfigurieren. Obwohl dies machbar ist, fügt es eine Schicht von Abbildungslogik hinzu.

Die Frontend-Perspektive (JavaScript/TypeScript)

Im Browser ist camelCase der absolute Herrscher.

const user = await fetchUser();
console.log(user.first_name); // Verletzt ESLint camelcase-Regel
render(user.email_address);

ESLint wird dies als Warnung kennzeichnen und Entwickler zwingen, die Regel zu deaktivieren oder Daten sofort nach Empfang zu konvertieren.

// Ausführliche Umbenennung
const { first_name: firstName, last_name: lastName } = response.data;

Dies erhöht den Boilerplate-Code und die Wahrscheinlichkeit von Fehlern.


3. Performance-Mythen: Serialisierung und Netzwerkübertragung

Bezüglich der Performance gibt es zwei verbreitete Mythen: „Feldnamenkonvertierung ist zu langsam“ und „Unterstriche erhöhen die Payload-Größe.“ Lassen Sie uns dies mit Daten klären.

Mythos 1: Laufzeit-Konvertierungs-Overhead

Hinweis: Führen Sie niemals eine globale rekursive Konvertierung im Frontend (Browser-Hauptthread) mit Interceptoren (z.B. Axios) durch. Bei großen Antworten führt dies zu Seiten-Jank und Speicherverbrauch. Fazit: Das Backend sollte die Konvertierung übernehmen.

Mythos 2: Übertragungsgröße und Komprimierung

Theoretisch ist first_name ein Byte länger als firstName. Mit aktivierter Gzip- oder Brotli-Komprimierung (Standard-HTTP-Konfiguration) verschwindet dieser Unterschied jedoch praktisch.


4. Developer Experience (DX) und Kognitive Psychologie

Architektur dreht sich nicht nur um Maschinen; sie dreht sich um Menschen.


5. Industriestandards und Begründung

Organisation Wahl Kernlogik & Hintergrund
Google camelCase Der Google API Guide (AIP-140) schreibt lowerCamelCase für JSON vor. Auch wenn interne Protobuf-Definitionen snake_case verwenden, wechselt die externe Konvertierungsschicht automatisch zu camelCase, um sich an das Web-Ökosystem anzupassen.
Microsoft camelCase Mit der Öffnung von .NET Core für Open Source und der Erfindung von TypeScript schwenkte Microsoft vollständig auf Webstandards um und gab das frühere PascalCase auf.
Stripe snake_case Ein typisches Ruby-Stack-Unternehmen. Sie kaschieren den Unterschied durch extrem robuste Client SDKs. Wenn Sie das Node SDK verwenden, obwohl snake_case übertragen wird, folgen die SDK-Methodensignaturen normalerweise den JS-Konventionen.
JSON:API camelCase Die von der Community getragene Spezifikation empfiehlt explizit camelCase, was den Konsens der Web-Community widerspiegelt.

6. Tiefgreifender Architektur-Ratschlag: Entkopplung und DTOs

Ein häufiges Anti-Pattern ist „Pass-through“: Datenbankentitäten direkt zu serialisieren, um sie zurückzugeben.

Best Practice: Führen Sie eine DTO (Data Transfer Object)-Schicht ein. Unabhängig davon, wie die zugrunde liegende Datenbank benannt ist, sollten Sie einen unabhängigen API-Vertrag (DTO) definieren. Da Sie ein DTO definieren, warum es nicht als camelCase definieren, um Webstandards einzuhalten? Moderne Mapping-Tools (MapStruct, AutoMapper, Pydantic) handhaben diese Konvertierung mühelos.


7. Blick nach vorne: GraphQL und gRPC

GraphQL: Die Community übernimmt fast 100 % camelCase. Wenn Ihr Team plant, GraphQL in Zukunft einzuführen, ist das Design von REST-APIs mit camelCase jetzt eine kluge Strategie für „Vorwärtskompatibilität“.

gRPC: Der Protobuf-Standard schreibt vor: .proto-Dateien verwenden snake_case für Felddefinitionen, aber sie müssen beim Mapping zu JSON in camelCase konvertiert werden. Dies ist Googles Standardlösung für Mehrsprachigkeit.


8. Zusammenfassung und Entscheidungsmatrix

Es gibt kein absolutes Richtig oder Falsch, nur Kompromisse. Hier ist der endgültige Entscheidungsrahmen:

Empfohlen: Standardmäßig camelCase

Für die überwiegende Mehrheit neuer, allgemeiner RESTful APIs, die Web/App-Clients gegenüberstehen, wird camelCase dringend empfohlen.

Grund: Ausrichtung an der Dominanz von JSON/JavaScript/TypeScript, unter Berücksichtigung der Gewohnheiten von 90 % der Konsumenten.

Tools: Beste Unterstützung durch OpenAPI-Code-Generatoren, Swagger UI und moderne IDEs.

Wann sollte snake_case verwendet werden?

1. Spezifische Konsumenten: Die primären Nutzer der API sind Python-Data Scientists oder System-Ops (Curl/Bash).

2. Altsysteme: Bestehende APIs sind bereits snake_case. Konsistenz > Best Practice. Mischen Sie keine Stile innerhalb desselben Systems.

3. Backend-Geschwindigkeitsextremismus: Verwendung von Python/Ruby ohne Ressourcen zur Pflege einer DTO-Schicht, direkte Weitergabe von Datenbankmodellen.

Entscheidungstabelle

Dimension Empfohlener Stil
Web Frontend / Mobile App camelCase (Null Impedanz, Typensicherheit)
Datenanalyse / Wissenschaftliches Rechnen snake_case (Passt zu Python/R Gewohnheiten)
Node.js / Go / Java Backend camelCase (Native oder perfekte Bibliotheksunterstützung)
Python / Ruby Backend camelCase (Konverter empfohlen) oder snake_case (Nur interne Tools)
Full-Stack Team Je höher der Full-Stack-Grad, desto mehr wird camelCase empfohlen

Das Wesen des API-Designs ist Empathie. Im Kontext von Web-APIs ist die Kapselung der Komplexität im Backend (Handling des Mappings) und die Bequemlichkeit für den Benutzer (Anpassung an JS-Gewohnheiten) die Wahl, die größere Professionalität widerspiegelt.

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen

camelCase vs. snake_case: Welche JSON-Feldnamen sind besser?