Tres modos, un solo espacio de trabajo. Formatear, Validar y Comparar comparten el mismo analizador y el mismo editor, así que un documento se comporta igual lo lea el modo que lo lea, y cambiar entre ellos nunca reformatea lo que has pegado.
Qué hace cada modo
| Modo | Qué hace |
|---|
| FormatearReescribe | Reindentar con dos espacios, cuatro espacios o tabulaciones, quitar de nuevo los espacios en blanco, u ordenar las claves de forma recursiva en cualquier sentido. Los valores, los escapes y el Unicode salen exactamente como entraron, y los arrays conservan su orden. |
| ValidarLocaliza | Nombra el fallo y lo señala, en lugar de informar de que el documento no es válido y dejarte buscar dónde. |
| CompararCompara datos | Dos documentos comparados por lo que significan, con cada cambio etiquetado como añadido, eliminado, modificado o de tipo cambiado. |
Los fallos se localizan, no solo se informan
Se nombran diecinueve causas distintas, cada una con su línea, su columna y su desplazamiento en bytes, y las líneas de alrededor se imprimen con un acento circunflejo bajo el carácter. Una coma antes de un cierre, una clave entre comillas simples, una palabra suelta, un comentario, un escape no válido y un carácter de control en crudo dentro de una cadena se leen como lo que son y no como un único error de análisis genérico.
Dos fallos que un documento válido todavía puede llevar
Ambos se informan en documentos que se analizan limpiamente, porque ambos cambian tus datos en silencio. Una clave duplicada no la recupera nada: JSON.parse conserva solo el último valor, y cualquier otro analizador con el que te cruces hace lo mismo, así que el aviso nombra la clave y su línea para poder arreglar el origen. Un entero por encima de 2^53 cambia de valor en el momento en que JavaScript lo lee, y así es como un identificador de 64 bits se convierte discretamente en otro identificador.
Lo que la comparación se niega a llamar diferencia
La indentación, los finales de línea y el orden en que se escribieron las claves de un objeto no tienen significado en JSON, así que no son diferencias. El orden de un array sí lo tiene y se compara como una secuencia, por eso un elemento insertado se lee como una inserción y no como si hubieran cambiado todos los elementos siguientes.
Leer un documento demasiado grande para recorrerlo
- El árbol se abre un nivel cada vez, así que un archivo grande no se convierte en una página grande. Cada fila lleva la ruta que llega hasta ella, users[4].email, con un botón para copiar la ruta o el valor.
- Búsqueda por clave, por valor o por ambos, con un recuento de coincidencias y un paso por los resultados.
- Las estadísticas aparecen en cuanto el documento se analiza: claves, objetos, arrays, cadenas, números, booleanos, nulos, profundidad máxima, tamaño y líneas.
- Conversiones a YAML, a una interfaz de TypeScript o a CSV. Cuando un documento no puede ser una tabla, la vía CSV dice qué forma habría necesitado en lugar de emitir algo engañoso.
El techo son 5 MiB. Por encima de unos 300 KiB los colores de sintaxis se apagan para que escribir siga siendo fluido, y en documentos muy grandes la comparación detallada se detiene antes y lo dice; la validación y las estadísticas siguen funcionando en todo el rango.
Detrás de esta página no hay ningún punto de API. El documento se analiza en la memoria del navegador y nunca llega a un servidor, no se escribe nada en el almacenamiento ni en la barra de direcciones, y lo único que se conserva entre visitas es la indentación que elegiste.