Java · Jackson JSON naming

Jackson snake_case ↔ camelCase

Java property는 camelCase로 유지하고 외부 snake_case JSON만 serialization 경계에서 변환하세요.

작성자 Camel Case Converter 편집팀게시 2026. 9. 12.마지막 검토

하나의 model/DTO에는 @JsonNaming

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로 firstName을 first_name에 연결해 각 property마다 annotation을 붙일 필요를 줄입니다.

앱 전체 규칙에는 ObjectMapper

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

PropertyNamingStrategies.SNAKE_CASE를 설정하면 serialization/deserialization 외부 property 이름에 적용됩니다.

예외에는 @JsonProperty

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

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

글로벌 규칙을 따르지 않는 소수 외부 이름에는 명시적 property mapping을 사용합니다.

프로덕션 고려사항

  • 규칙의 소유 레벨을 class, ObjectMapper, field 중 명확히 정하세요.
  • naming strategy는 JSON property 이름을 바꾸며 string value는 바꾸지 않습니다.
  • 여러 외부 이름이 하나의 property로 정규화되면 API contract 문제로 다루세요.
  • 예시는 Jackson 2.x package를 사용하므로 현재 major version의 migration 문서를 확인하세요.

JSON 경계 온라인 테스트

중첩 객체, 배열, 제외 키, stop path, 접두사, 충돌, key-only diff를 구현 전에 확인하세요.

.json 파일을 놓거나 기기에서 선택

파일은 브라우저에서만 읽습니다. 최대 크기: 5 MB.

변환된 JSON
{
  "user_profile": {
    "first_name": "Ada",
    "created_at": "2026-09-12"
  }
}

파싱, 파일 읽기, 포맷 및 키 변환은 모두 브라우저에서 로컬로 실행됩니다. JSON 입력은 변환 서버로 전송되지 않습니다.