Guía
Claves duplicadas en JSON: qué ocurre y cómo evitarlas
Descubre por qué dos propiedades con el mismo nombre producen resultados imprevisibles y cómo detectar la pérdida de datos antes de convertir JSON.
por Tools in a Tab · Publicado el · Revisado el
Respuesta breve
Una clave duplicada en un objeto JSON no tiene un resultado portátil. La especificación recomienda que los nombres sean únicos, pero distintos analizadores pueden conservar el primer valor, el último, todos o rechazar la entrada. La solución segura es detectar la repetición y decidir qué valor era correcto antes de procesar o convertir el documento.
Ejemplo mínimo
Este texto tiene sintaxis JSON, pero repite estado:
{
"estado": "pendiente",
"estado": "enviado"
}
Un analizador habitual basado en JSON.parse deja un único valor y suele
conservar "enviado". Eso no convierte el documento en inequívoco: otro
receptor puede actuar de otra manera. Además, cuando el primer valor se pierde,
formatear el resultado ya no permite recuperarlo.
La sección 4 del RFC 8259 indica que los nombres de un objeto deberían ser únicos y advierte que el comportamiento con nombres repetidos es imprevisible entre implementaciones.
Cómo corregirlo
Primero averigua si la repetición es accidental o representa varios valores:
- Si solo existe un estado vigente, conserva una única propiedad.
- Si ambos valores forman una lista legítima, usa un array con un nombre claro.
- Si son eventos históricos, modela objetos con fecha y estado en vez de repetir la clave.
Por ejemplo, una secuencia se representa sin ambigüedad así:
{
"historial": [
{ "estado": "pendiente", "orden": 1 },
{ "estado": "enviado", "orden": 2 }
]
}
Cómo comprobarlo sin perder la evidencia
Haz la detección sobre el texto original, antes de convertirlo en un objeto del lenguaje. El conversor de JSON a CSV de Tools in a Tab rechaza nombres duplicados antes de generar filas, porque una tabla no podría decidir qué columna representa cada valor.
El validador JSON sirve para localizar errores de sintaxis, pero una entrada con claves duplicadas puede ser aceptada por analizadores que siguen la gramática. Por eso «se puede analizar» no equivale a «es interoperable». Comprueba las claves antes de formatear: una vez reducidas a un solo valor, la colisión original puede haber desaparecido.
Regla práctica
Exige nombres únicos en cada objeto, activa una comprobación de duplicados en la entrada y no confíes en el orden para resolver conflictos. Si necesitas varios valores, exprésalos de forma explícita con un array o con propiedades diferentes. Así el mismo JSON conserva su significado al pasar entre lenguajes, APIs y herramientas.