JavaScript 객체 키 가이드
JavaScript Object Keys를 snake_case로 변환
frontend가 camelCase를 쓰고 API가 snake_case를 기대하면 serialization 경계에서 key를 변환하세요.
JavaScript 구현
function toSnakeKey(key) {
return key.replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/[-\s]+/g, "_").toLowerCase()
}
function keysToSnake(value) {
if (Array.isArray(value)) return value.map(keysToSnake)
if (value === null || typeof value !== "object") return value
const output = {}
for (const [key, child] of Object.entries(value)) {
const nextKey = toSnakeKey(key)
if (Object.hasOwn(output, nextKey)) throw new Error(`Key collision: ${nextKey}`)
output[nextKey] = keysToSnake(child)
}
return output
}camelCase/약어 경계를 분리하고 separator를 정규화한 뒤 최종 key를 소문자로 만듭니다.
새 object를 재구성하면 값을 대입하기 전에 collision check를 할 수 있습니다.
프로덕션 예외 사례
- HTTPURL, userID, OAuthToken에는 명시적인 약어 규칙이 필요할 수 있습니다.
- _id, $schema 같은 의미 있는 prefix는 보존할 수 있습니다.
- API contract가 deep conversion인지 top-level-only인지 먼저 결정합니다.
- 서로 다른 JavaScript key가 같은 snake_case가 될 수 있으므로 collision check를 유지합니다.
객체 키 온라인 테스트
JSON 객체를 붙여넣어 재귀 변환, 최상위 전용, 제외 키, _/$ 접두사, 충돌 처리를 확인하세요.
.json 파일을 놓거나 기기에서 선택
파일은 브라우저에서만 읽습니다. 최대 크기: 5 MB.
변환된 JSON
{
"user_profile": {
"first_name": "Ada",
"created_at": "2026-09-12"
}
}파싱, 파일 읽기, 포맷 및 키 변환은 모두 브라우저에서 로컬로 실행됩니다. JSON 입력은 변환 서버로 전송되지 않습니다.