El Error de Sintaxis en Este Ejemplo
La entrada anterior es casi JSON válido. El problema es la coma final después de false en el segundo objeto de usuario:
{"name": "Bob", "active": false,}
Elimina esa coma y el documento se vuelve válido:
{
"users": [
{"name": "Alice", "active": true},
{"name": "Bob", "active": false}
]
}
Este es el error JSON más comun que enfrentan los desarrolladores, y es fácil pasarlo por alto porque JavaScript lo tolera.
Que Hace Válido a un JSON
La sintaxis JSON está definida por RFC 8259. Las reglas son más simples de lo que la mayoría espera. Un documento JSON válido es uno de: un objeto, un array, una cadena, un número, un booleano (true o false) o null. Los objetos son colecciones de pares clave-valor. Las claves deben ser cadenas (con comillas dobles). Los valores pueden ser cualquier valor JSON. Los arrays son listas ordenadas de valores JSON.
Reglas estructurales que más a menudo tropiezan a los desarrolladores:
Comas finales
El último elemento de un array o el último par clave-valor de un objeto no debe tener coma final. [1, 2, 3,] no es válido. {"a": 1, "b": 2,} no es válido.
Comillas en cadenas
Todas las cadenas deben usar comillas dobles. 'Alice' no es JSON válido. "Alice" si lo es.
Comillas en claves
Las claves de objeto deben ser cadenas con comillas. {name: "Alice"} no es JSON. {"name": "Alice"} si lo es.
Sin comentarios
JSON no tiene sintaxis de comentarios. // comentario y /* comentario */ causan error de análisis. Esto sorprende a quienes vienen de lenguajes que soportan comentarios en archivos de configuración.
Valores float especiales
NaN, Infinity y -Infinity no son valores JSON válidos. Si intentas serializar NaN a JSON con JSON.stringify(), obtienes null. El json.dumps() de Python lanza ValueError por defecto.
Los 5 Errores de Sintaxis JSON Mas Comunes
| Error | Ejemplo | Corrección |
|---|---|---|
| Coma final | [1,2,3,] | [1,2,3] |
| Comillas simples | {'a': 1} | {"a": 1} |
| Clave sin comillas | {a: 1} | {"a": 1} |
| Comentario | // comment | Eliminar o mover fuera del JSON |
| NaN/Infinity | {"v": NaN} | Usar null o un marcador string |
Formatos Relacionados: JSON5, JSONC, HJSON
JSON5 agrega comillas simples, claves sin comillas, comas finales y comentarios. JSONC solo agrega comentarios. HJSON (Human JSON) usa indentación en lugar de llaves. Ninguno es intercambiable con JSON estándar. Cada uno requiere su propio analizador. Para configuración, cualquiera funciona. Para API de datos, usa JSON estándar.
Si necesitas comparar estructuras JSON, prueba el Comparador de JSON. Para formatear tu JSON validado, usa el Formateador JSON.