Java · nomenclatura JSON com Jackson

Jackson snake_case ↔ camelCase

Mantenha propriedades Java em camelCase e traduza o JSON externo snake_case na fronteira de serialização.

Por Equipe editorial do Camel Case ConverterPublicado em 12 de set. de 2026Última revisão

Usar @JsonNaming em um modelo 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 mapeia firstName para first_name sem annotation em cada propriedade.

Usar ObjectMapper para uma convenção global

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

PropertyNamingStrategies.SNAKE_CASE se aplica a nomes externos na serialização e deserialização.

Usar @JsonProperty para exceções

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

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

Mappings explícitos servem para poucos nomes externos que não seguem a regra global.

Considerações de produção

  • Defina claramente o nível dono da convenção: classe, ObjectMapper ou campo.
  • A estratégia altera nomes de propriedade, não valores string no JSON.
  • Vários nomes externos normalizados para uma propriedade indicam problema de contrato API.
  • Os exemplos usam packages Jackson 2.x; revise a migração da sua major version.

Testar a fronteira JSON online

Teste objetos aninhados, arrays, exclusões, stop paths, prefixos, colisões e diff de chaves antes de implementar.

Solte um arquivo .json ou escolha no dispositivo

Arquivos são lidos apenas no navegador. Tamanho máximo: 5 MB.

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

Parsing, leitura de arquivo, formatação e conversão rodam localmente no navegador. O JSON não é enviado a um servidor de conversão.