UTILS.
100% en el navegador
{ }

Objeto JS a JSON estricto

Repara un literal de objeto JavaScript laxo —claves sin comillas, comillas simples, comas finales, comentarios— en JSON válido estricto, sin eval.

— la salida aparece aquí —

Acerca de esta herramienta

La herramienta Objeto JS a JSON estricto repara un literal de objeto laxo al estilo JavaScript o JSON5 en JSON válido y estricto. Está construida sobre un tokenizador escrito a mano —nunca usa eval ni new Function— así que es segura bajo una Content Security Policy estricta y segura para pegar texto no confiable. Todo se ejecuta en tu navegador.

Acepta las cosas que el JSON real rechaza: claves identificadoras sin comillas, cadenas con comillas simples, comas finales antes de ] o }, comentarios de línea // y de bloque /* */, hexadecimales (0xFF), literales octales y binarios, números con signo más inicial y con punto inicial (+1, .5), y los valores undefined, NaN e Infinity. Las claves se vuelven a entrecomillar con comillas dobles, las cadenas se vuelven a escapar correctamente, los comentarios y comas finales se eliminan, y los números se normalizan a números JSON planos. Eliges cómo tratar undefined (convertir a null o quitar la clave) y los números no finitos (convertir a null o lanzar un error), luego el valor se vuelve a serializar con JSON.stringify en la indentación elegida: 2 espacios, 4 espacios, tabuladores o minificado.

Cuando la entrada no puede analizarse, la herramienta informa del primer error de sintaxis con su línea y columna para que encuentres el problema rápidamente. Esto complementa a un formateador de JSON estricto, que simplemente rechaza la entrada laxa: aquí el objetivo es rescatar salida de consola copiada, fragmentos de configuración y objetos editados a mano en JSON que cualquier parser aceptará.

Preguntas frecuentes

¿Qué sintaxis laxa acepta?
Claves sin comillas, cadenas con comillas simples, comas finales, comentarios // y /* */, números hex/octal/binario, números con signo más inicial y con punto inicial, y los literales undefined, NaN e Infinity: las cosas comunes que hacen inválidos como JSON los objetos JS copiados.
¿Usa eval para analizar?
No. Usa un tokenizador escrito a mano y un parser de descenso recursivo, nunca eval ni new Function, así que funciona bajo una Content Security Policy estricta y es seguro para entrada no confiable. Solo produce datos, nunca ejecuta código.
¿Cómo se manejan undefined, NaN e Infinity?
JSON no tiene tales valores. Tú eliges: undefined puede pasar a null o que se quite su clave, y NaN/Infinity pueden pasar a null o lanzar un error. Esto mantiene la salida estrictamente como JSON válido en cualquier caso.
¿Qué pasa cuando la entrada es inválida?
El parser se detiene en el primer error de sintaxis genuino y lo informa con la línea y columna donde ocurrió, para que puedas localizar y arreglar el carácter infractor en vez de adivinar.

Más herramientas