Java · nommage JSON Jackson

Jackson snake_case ↔ camelCase

Gardez les propriétés Java idiomatiques en camelCase et traduisez le JSON externe snake_case à la frontière de sérialisation.

Par Équipe éditoriale Camel Case ConverterPublié le 12 sept. 2026Dernière relecture

Utiliser @JsonNaming pour un modèle ou DTO

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 mappe firstName vers first_name sans annotation sur chaque propriété.

Utiliser ObjectMapper pour une convention globale

ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
UserProfile profile = mapper.readValue(json, UserProfile.class);
String output = mapper.writeValueAsString(profile);

PropertyNamingStrategies.SNAKE_CASE s’applique à la sérialisation et désérialisation des noms externes.

Utiliser @JsonProperty pour les exceptions

public class UserProfile {
  @JsonProperty("user_id")
  private String userId;

  @JsonProperty("display_name")
  private String displayName;
}

Les mappings explicites conviennent aux quelques noms externes qui ne suivent pas la règle globale.

Points d’attention en production

  • Définissez clairement le niveau propriétaire de la convention : classe, ObjectMapper ou champ.
  • La stratégie change les noms de propriétés, pas les valeurs de chaînes.
  • Deux noms externes normalisés vers une propriété signalent un problème de contrat API.
  • Les exemples utilisent les packages Jackson 2.x ; vérifiez la migration de votre version majeure.

Tester la frontière JSON en ligne

Testez objets imbriqués, tableaux, exclusions, stop paths, préfixes, collisions et diff de clés avant l’implémentation.

Déposez un fichier .json ou choisissez-en un sur votre appareil

Les fichiers sont lus uniquement dans votre navigateur. Taille maximale : 5 Mo.

JSON converti
{
  "user_profile": {
    "first_name": "Ada",
    "created_at": "2026-09-12"
  }
}

Analyse, lecture de fichier, formatage et conversion s’exécutent localement dans votre navigateur. Le JSON n’est pas envoyé à un serveur de conversion.