JSON en camelCase: cómo convertir payloads de API a snake_case
Las APIs suelen mezclar convenciones: los clientes JavaScript producen camelCase y los backends Python/Ruby esperan snake_case. Una capa fina de transformación lo arregla en el límite de serialización.
function toSnakeCase(obj) {
if (Array.isArray(obj)) return obj.map(toSnakeCase);
if (obj && typeof obj === "object") {
return Object.fromEntries(
Object.entries(obj).map(([k, v]) => [
k.replace(/[A-Z]/g, c => "_" + c.toLowerCase()),
toSnakeCase(v),
])
);
}
return obj;
}