Guia de chaves de objeto em JavaScript
Converter chaves de objeto para snake_case em JavaScript
Se o frontend usa camelCase e a API espera snake_case, transforme as chaves na fronteira de serialização.
Implementação em 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
}Separe limites camelCase/siglas, normalize separadores e converta a chave final para minúsculas.
Reconstruir um novo objeto permite detectar colisões antes de atribuir valores.
Casos extremos em produção
- HTTPURL, userID ou OAuthToken podem exigir regras explícitas.
- Prefixos semânticos como _id e $schema podem precisar ser preservados.
- Decida se o contrato API exige conversão profunda ou só top-level antes de recursar.
- Mantenha detecção de colisões porque chaves distintas podem virar o mesmo snake_case.
Testar chaves de objeto online
Cole um objeto JSON para testar conversão recursiva, apenas nível superior, exclusões, prefixos _/$ e colisões.
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.