JSON vs JSON5 vs JSONC
En resumen: Superconjuntos estrictos en orden: JSONC añade comentarios; JSON5 añade comillas simples, claves sin comillas, comas finales y números hexadecimales. Elegir mal rompe una API, no tu editor.

En resumen: usa JSON estándar siempre que los datos crucen una frontera entre sistemas, y usa JSONC solo para configuración local que editan personas; recurre a JSON5 cuando necesites comillas simples, comas finales o claves sin comillas, pero confirma antes que el cargador lo admite.
En una línea: JSONC es JSON más comentarios; JSON5 es JSON más costumbres de JavaScript.
Matriz de características
| Característica | JSON | JSONC | JSON5 |
|---|---|---|---|
| Cadenas entre comillas dobles | ✅ | ✅ | ✅ |
| Cadenas entre comillas simples | ❌ | ❌ | ✅ |
| Claves sin comillas | ❌ | ❌ | ✅ |
Comentarios de línea // |
❌ | ✅ | ✅ |
Comentarios de bloque /* */ |
❌ | ✅ | ✅ |
| Comas finales | ❌ | ❌ | ✅ |
Números hexadecimales 0xFF |
❌ | ❌ | ✅ |
Infinity / NaN |
❌ | ❌ | ✅ |
| Cadenas de varias líneas | ❌ | ❌ | ✅ |
| Legible por analizadores estándar | ✅ | ❌ | ❌ |
Ten en cuenta que JSONC solo resuelve los comentarios. Mucha gente asume que «JSON que admite comentarios» también admite comas finales; tsconfig.json sigue fallando con una.
Para qué sirve cada uno
JSON — intercambio. APIs, colas, columnas JSON de base de datos, logs. Todo lo que va de máquina a máquina.
JSONC — configuración de editor. VS Code analiza estos archivos por sí mismo, así que JSON.parse nunca los ve. No hay RFC; es una convención de facto liderada por Microsoft.
JSON5 — un superconjunto indulgente para humanos. El objetivo era «configuración que parece un literal de objeto de JavaScript». El más adecuado para archivos .json5 cargados por herramientas de compilación; la sintaxis más amplia y el soporte de herramientas más estrecho.
Elegir
| Situación | Elección |
|---|---|
| Cuerpos de petición o de respuesta | JSON, sin alternativa |
| Columnas JSON en MySQL / PostgreSQL | JSON, sus funciones no aceptan otra cosa |
| Configuración de proyecto que necesita explicaciones | JSONC si se admite, si no YAML |
| Quieres la laxitud estilo JS | JSON5, después de confirmar que el cargador lo admite |
| Lo van a editar personas no técnicas | YAML, la indentación gana a las llaves |
Una trampa fácil
Analizar un archivo JSONC como JSON estricto produce un error que apunta al comentario:
SyntaxError: Unexpected token / in JSON at position 42
Antes de borrar el comentario, comprueba si el archivo está pensado para ser JSONC. Si lo borras, puede que aún te topes con una coma final dos líneas más abajo.
FAQ
¿Cómo debo elegir entre JSONC y JSON5?
Usa JSONC cuando los comentarios sean lo único que necesitas: añade // y /* */ sobre JSON, y el settings.json y el tsconfig.json de VS Code lo usan. Usa JSON5 cuando además quieras comillas simples, claves sin comillas, comas finales, números hexadecimales o cadenas de varias líneas. Ambos dependen del cargador, así que confirma que la herramienta que lee el archivo lo admite.
¿Por qué no se puede leer un archivo JSONC como JSON estándar?
JSONC es una convención de facto, no una RFC aparte, así que los analizadores estándar rechazan los comentarios. JSON.parse sobre un archivo así lanza Unexpected token /, apuntando al comentario en lugar de a los datos. Solo la configuración que lee un editor o un analizador dedicado debería escribirse como JSONC.
¿Debería enviar un archivo JSON5 a una API?
No. Las APIs, las columnas JSON de base de datos y las colas analizan JSON estricto, así que las comillas simples, las claves sin comillas y las comas finales de JSON5 se rechazan. JSON5 es para configuración local que editan personas; conviértelo a JSON estándar antes de que cruce una frontera entre sistemas.