Java · Jackson JSON Naming
Jackson snake_case ↔ camelCase
Lass Java-Properties idiomatisch camelCase und übersetze externes snake_case-JSON an der Serialisierungsgrenze.
@JsonNaming für ein Model oder DTO nutzen
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public class UserProfile {
private String firstName;
private String avatarUrl;
}SnakeCaseStrategy mappt firstName auf first_name ohne Annotation an jeder Property.
ObjectMapper für eine globale Konvention nutzen
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
UserProfile profile = mapper.readValue(json, UserProfile.class);
String output = mapper.writeValueAsString(profile);PropertyNamingStrategies.SNAKE_CASE wirkt auf externe Namen bei Serialisierung und Deserialisierung.
@JsonProperty für Ausnahmen nutzen
public class UserProfile {
@JsonProperty("user_id")
private String userId;
@JsonProperty("display_name")
private String displayName;
}Explizite Mappings eignen sich für wenige externe Namen, die der globalen Regel nicht folgen.
Hinweise für Produktion
- Eigentümerschaft der Konvention klar festlegen: Klasse, ObjectMapper oder einzelne Properties.
- Naming Strategies ändern Property-Namen, nicht String-Werte im JSON.
- Mehrere externe Namen, die auf eine Property normalisieren, sind ein API-Vertragsproblem.
- Beispiele nutzen Jackson-2.x-Packages; Migration der eingesetzten Major-Version prüfen.
JSON-Grenze online testen
Teste verschachtelte Objekte, Arrays, Ausschlüsse, Stop Paths, Präfixe, Kollisionen und Key-Diff vor der Implementierung.
.json-Datei hier ablegen oder vom Gerät auswählen
Dateien werden nur im Browser gelesen. Maximale Größe: 5 MB.
{
"user_profile": {
"first_name": "Ada",
"created_at": "2026-09-12"
}
}Parsing, Dateilesen, Formatierung und Schlüsselkonvertierung laufen lokal im Browser. JSON wird nicht an einen Conversion-Server gesendet.