TextSorter
Listo

Por qu Formatear, Minificar y Validar nunca disienten sobre qu est roto

Un solo analizador, tres trabajos. Formatear, Minificar y Validar envan primero su texto al mismo analizador JSON estricto integrado en su navegador, as que cualquier cosa que falle para uno de ellos, falla para los tres. Solo difieren en lo que ocurre una vez que el anlisis tiene xito.

Minificado en la entrada
{"a":1,"b":[2,3]}
Formatear produce
{
  "a": 1,
  "b": [
    2,
    3
  ]
}
BotnQu hace una vez que su texto se analiza correctamente
FormatearReescribe el valor analizado con una sangra de dos espacios y un salto de lnea por elemento. El estilo es fijo, no hay opcin para elegir un ancho diferente o estilo de llaves.
MinificarReescribe el mismo valor analizado sin espacios en blanco en absoluto, colapsando todo en una sola lnea.
ValidarDeja su texto exactamente como lo escribi y reporta el xito, o el mensaje de error exacto del analizador, incluyendo la posicin del carcter donde el anlisis se interrumpi.

Los tres aplican reglas idnticas con cero flexibilidad, porque todos se apoyan en la misma implementacin estricta: los nombres de propiedades y valores de cadena necesitan comillas dobles, nunca comillas simples; una coma final despus del ltimo elemento en un objeto o arreglo es una falla grave, no una eleccin de estilo; y no hay soporte para comentarios en ninguna forma. Esa es la especificacin JSON funcionando exactamente como se dise, no esta herramienta siendo inusualmente exigente.

La brecha que confunde a las personas es la que existe entre JSON y un objeto literal de JavaScript. Cdigo como {name: 'Alice', tags: ['a', 'b'],} se ejecuta bien dentro de un script, ya que JavaScript permite claves sin comillas, comillas simples y una coma final. Nada de eso es JSON vlido. Pguelo aqu y Formatear, Minificar y Validar lo rechazarn de la misma manera, porque la sintaxis vlida de JavaScript y el JSON vlido resultan ser lenguajes relacionados pero no idnticos.

El mismo analizador que la consola de su navegador. El mensaje de error que Validar le muestra es el mensaje literal que una llamada a JSON.parse() arrojara dentro del cdigo de su propia aplicacin, no una versin parafraseada. Si alguna vez ha depurado un error de anlisis en la consola de un navegador, ya sabe cmo interpretar los que muestra esta herramienta.

Por qu "JSON vlido" an puede ser el dato equivocado

Validar verifica la gramtica, no el significado. Confirma que sus corchetes, comillas y comas estn en los lugares correctos. No tiene idea de si falta un campo requerido o si un nmero lleg como cadena de texto.

Roto en la entrada
{"a": 1 "b": 2}
Validar reporta
Expected ',' or '}' after property value in JSON at position 8 (line 1 column 9)

Ese mensaje seala el carcter exacto donde el analizador se rindi: justo despus del 1, donde esperaba una coma o una llave de cierre y en su lugar encontr el inicio de otra propiedad. Contar hasta esa posicin en un editor de texto o usar su comando de "ir al carcter" suele ser ms rpido que leer toda la carga til buscando a simple vista una coma faltante.

Lo que Validar no puede decirle es si los datos son correctos una vez que se analizan. Una respuesta puede ser sintcticamente un JSON perfecto y an carecer de un campo que su cdigo espera, contener un nmero como la cadena "42" en lugar del nmero 42, o almacenar la misma fecha en tres formatos diferentes a travs de tres registros distintos. Nada de eso es un problema de gramtica, as que nada de eso produce un error aqu.

Validar atrapaValidar no tiene opinin sobre
Un corchete o llave que falta o no coincideUn campo requerido que simplemente est ausente
Una coma faltante entre dos propiedadesUna cadena ubicada donde se esperaba un nmero
Una clave sin comillas o con comillas simplesEl mismo campo formateado diferente entre registros
Una coma final o un comentario de cdigoDatos que son internamente inconsistentes pero individualmente vlidos

La sintaxis y el significado son dos verificaciones separadas. Esta herramienta solo realiza la primera. Para la segunda, un validador de esquemas o la propia comprobacin de tipos de su aplicacin es la herramienta correcta, ya que juzgar lo que debera significar un valor requiere saber cmo se supone que deben verse sus datos especficos.

Por qu el botn Reparar falla con apstrofes dentro de los valores de texto

Reparar no puede distinguir un apstrofe de una comilla. Reemplaza cada comilla simple en su texto por una comilla doble, por lo que una contraccin como "it's" ubicada dentro de un valor de cadena hace que su apstrofe se lea como una comilla de cierre, lo que usualmente corrompe el mismo JSON que intentaba reparar.

Roto en la entrada
{name: "Alice", active: true, nickname: undefined,}
Reparar y Formatear produce
{
  "name": "Alice",
  "active": true,
  "nickname": null
}

Detrs de ese resultado hay una secuencia fija de cuatro pases de buscar y reemplazar, ejecutados en este orden cada vez, sin importar si su texto realmente necesita cada uno:

PasoQu reescribe
1Cada ' se convierte en un " en todo el texto.
2Una coma ubicada justo antes de un } o ] de cierre es eliminada.
3Una palabra sola seguida de dos puntos, como name:, se envuelve en comillas dobles, pero solo si comienza con una letra o un guion bajo.
4La palabra literal undefined se convierte en null.

El paso uno es un reemplazo global ciego, no un analizador que entiende dnde empieza y termina una cadena de texto, y eso es exactamente lo que hace peligrosos a los apstrofes. Introdzcale {'name': 'It's a test'} y el primer paso convierte cada comilla simple en una doble sin excepciones, produciendo {"name": "It"s a test"}. El apstrofe dentro de "It's" es ahora un carcter de comillas que cierra la cadena dos caracteres antes, dejando un s a test" suelto que ya no pertenece a nada.

La reparacin usualmente falla por completo en lugar de corromper silenciosamente sus datos. Ese texto residual casi siempre rompe el anlisis una segunda vez, por lo que Reparar informa que no se pudo arreglar automticamente y deja el contenido de su editor intacto, en lugar de devolverle un JSON con un texto arruinado sigilosamente. El costo real es su tiempo, no sus datos: an tendr que poner comillas a ese valor a mano, porque una operacin de buscar y reemplazar ciega no tiene forma de distinguir un apstrofe de un delimitador.

El alcance de Reparar es tambin intencionalmente limitado. No puede insertar una coma faltante entre dos propiedades, no puede eliminar un comentario de cdigo, no puede convertir un arreglo cerrado con el tipo de corchete equivocado, y no puede notar o resolver una clave duplicada, ya que ninguno de esos problemas coincide con ninguna de sus cuatro expresiones regulares. Si Reparar falla, la posicin exacta de error de Validar suele ser el camino ms rpido hacia una reparacin manual.

Reparar no le hace nada al texto que ya se analiza con xito. Hgalo clic en un JSON que ya es vlido y mostrar un mensaje indicndolo, dejando su texto exactamente como estaba, incluyendo su formato. Haga clic en Formatear en su lugar si desea que un JSON vlido cambie de apariencia.

Qu pasa cuando su JSON tiene la misma clave dos veces

La ltima aparicin gana discretamente. La especificacin de JSON no prohbe una clave repetida, y el analizador de esta herramienta lo resuelve conservando solo el valor de la copia que aparezca al final, sin arrojar errores ni advertencias.

Dos claves "name" en la entrada
{"name": "Alice", "name": "Bob"}
Validar dice vlido, Formatear da
{
  "name": "Bob"
}

Haga clic en Validar con esa entrada y reportar que el JSON es vlido, lo cual es tcnicamente correcto: la especificacin solo dice que las implementaciones "deberan" tratar los nombres como nicos, dejando el comportamiento real a cargo del que realice el anlisis. El analizador de esta herramienta, que es el mismo incorporado en el navegador, retiene el ltimo valor que ve para una clave repetida y descarta silenciosamente cualquier valor anterior. "Alice" desaparece en el momento en que termina el anlisis, y no hay nada en la salida que demuestre que alguna vez estuvo all.

Formatear y Minificar heredan el mismo comportamiento, ya que ambos analizan su texto antes de reescribirlo. Ejecute cualquiera de los dos en un JSON con una clave duplicada y la copia adicional ya se habr esfumado para cuando usted vea el resultado. Es fcil pasarlo por alto cuando el duplicado fue accidental, quizs un error cometido al fusionar dos fragmentos de JSON a mano en lugar de algo que tena intencin de escribir.

La vista de rbol es la forma ms rpida de detectarlo. Puesto que una clave duplicada se colapsa en una sola entrada antes de llegar al rbol, si una clave que esperaba ver renderizada dos veces aparece solo una, es una seal razonable para volver atrs y revisar su origen en busca de una repeticin accidental.

Por qu un nmero largo de ID cambia despus de hacer clic en Formatear

JSON no tiene lmite en el tamao de los enteros, pero el tipo de nmero de JavaScript s lo tiene. Los nmeros ms all del 9,007,199,254,740,991 no pueden almacenarse con exactitud, por lo que un ID largo se redondea silenciosamente al valor ms cercano que encaje, sin nada que le advierta que esto sucedi.

ID de 18 dgitos en la entrada
{"id": 900719925474099123}
Formatear devuelve
{
  "id": 900719925474099100
}

Cada nmero en un documento JSON analizado por esta herramienta, o por cualquier motor de JavaScript, se almacena como un valor de coma flotante de 64 bits. Ese formato solo puede representar cada entero con exactitud hasta el 9,007,199,254,740,991, un lmite definido por el propio lenguaje. Introdzcale un entero ms grande y se redondear al valor ms prximo que el formato pueda retener de manera real. En el ejemplo superior, un ID de 18 dgitos que termina en ...099123 vuelve terminando en ...099100. Tanto el antes como el despus son JSON perfectamente vlidos segn las reglas de la especificacin; solo los dgitos cambiaron, y lo hicieron en silencio.

Esto importa ms para los grandes identificadores enteros que aparecen constantemente en los sistemas reales: identificadores de tipo snowflake de Discord y Twitter, algunas claves primarias de bases de datos, y ciertos valores financieros o de telemetra representados como enteros gigantes en lugar de cadenas de texto. Formatear, Minificar y Reparar realizan un ciclo completo de anlisis y reescritura de sus datos, as que cualquiera de los tres puede corromper silenciosamente un ID de esta manera, no solo Formatear.

Trate a los ID de ms de 15 o 16 dgitos como no seguros al pasarlos por esta herramienta. Si un paquete de datos contiene identificadores tan largos, verifique los dgitos a simple vista antes y despus, o mejor, trabaje con una biblioteca de JSON construida para enteros de precisin arbitraria, o una que lea esos campos especficos como texto. Un esquema que represente ID de gran tamao como cadenas de texto entre comillas jams chocar con este lmite, puesto que el techo de precisin solo aplica al tipo numrico.

Por qu la operacin de formatear puede reordenar en silencio las claves de su objeto

Las claves que parecen nmeros saltan al frente. Cualquier clave como "2" o "10" es movida antes de todas las claves de texto ordinarias y se ordena de forma ascendente segn su valor numrico, sin importar dnde la haya escrito originalmente.

Escrito en este orden
{"b": 1, "10": 2, "a": 3, "2": 4}
Formatear lo reordena a
{
  "2": 4,
  "10": 2,
  "b": 1,
  "a": 3
}

Mire de cerca ese resultado: "2" y "10" se mueven hasta el puro frente, por delante de "b" aunque "b" haya sido escrito primero, y aterrizan en orden numrico, el 2 antes que el 10, no en el orden en que aparecieron en la fuente. Las claves de cadena de texto comunes "b" y "a" mantienen su orden relativo original detrs de las que tienen apariencia numrica.

Este es un comportamiento estndar definido por la especificacin del lenguaje JavaScript sobre cmo se enumeran las claves de un objeto, no una peculiaridad exclusiva de esta herramienta. Cualquier clave que se interprete como un entero no negativo, sin ceros iniciales, punto decimal o signos, se trata como un ndice de arreglo para propsitos de ordenacin y se ordena numricamente por delante de todo lo dems. Es fcil pasarlo por alto hasta que le ocurre a datos en los que usted no esperaba que la estructura cambiara en absoluto.

Dnde causa problemas realmente esto: en JSON donde las claves del objeto resultan ser cadenas numricas usadas como ndice, identificadores, una estructura parecida a un arreglo representada como objeto o filas de hojas de clculo categorizadas por su nmero. Si sus datos nunca emplean claves de aspecto numrico, el formato jams reordenar nada y el orden de insercin se preservar exactamente como fue redactado.

Por qu nunca debera confirmar un JSON minificado en Git

Un archivo minificado convierte cualquier cambio en un informe de que se ha modificado la lnea entera. Dado que el archivo completo es tcnicamente una sola lnea, modificar un simple valor en cualquier parte har que una herramienta de comparacin reporte que toda la lnea cambi, ocultando qu fue lo que realmente se movi.

Mismo objeto, Minificar
{"id":42,"active":true,"tag":"draft"}
Mismo objeto, Formatear
{
  "id": 42,
  "active": true,
  "tag": "draft"
}

El JSON minificado existe para las mquinas. Eliminar todo espacio y salto de lnea resta bytes reales de una carga til que se enva a travs de una red repetidamente, algo que s importa para la respuesta de una API pblica servida millones de veces, pero apenas importa para un archivo de configuracin que se lee una vez al arranque. El JSON con impresin bonita existe para la gente: una propiedad por lnea con una sangra consistente es lo que realmente vuelve legibles los grandes archivos de configuracin o respuestas de API.

El costo de confundir esto en el control de versiones es fcil de subestimar. Almacene la versin minificada de ese objeto en Git y cambie solamente "tag": "draft" a "tag": "final", y el revisor ver la lnea completa marcada como modificada, porque todo el archivo es una lnea. No podrn descifrar, mirando nicamente las diferencias reportadas, si cambi un solo campo o si se reescribi toda la estructura. En cambio, guarde la versin formateada y esa misma edicin producir un reporte de una sola lnea apuntando directo a "tag".

El comportamiento de reordenamiento de claves explicado anteriormente agrava este problema. Dos herramientas que apliquen estilos ligeramente distintos al mismo conjunto de datos, o un objeto que resulta contener claves de texto que parecen nmeros, pueden generar un reporte de diferencias que se vea alarmante aun si los datos por debajo no sufrieron alteraciones significativas.

Mantenga una fuente formateada, genere una compilacin minificada. Editar directamente un JSON minificado, y luego intentar revisar los cambios, es pelear contra el formato en cada paso. Guarde la versin legible bajo control de versiones y produzca la copia minificada como un paso de construccin de software en su lugar.

Cmo encontrar un campo errneo en una respuesta profundamente anidada

La vista de rbol convierte el JSON anidado en un esquema colapsable. Cada objeto y arreglo puede plegarse de manera independiente y lleva una etiqueta con cuntas claves o elementos contiene, as que usted puede colapsar lo que ya entiende y concentrarse en la nica rama que realmente est investigando.

El rbol analiza su JSON con el mismo rigor que usa Validar, as que necesita de entrada con sintaxis correcta para funcionar en primer lugar. Haga clic en l habiendo introducido un JSON roto y obtendr el mismo error de analizador que le mostrara Validar, no un rbol parcial construido a partir de lo que s se pudo analizar.

Tipo de valorCmo aparece en el esquema
CadenaMostrada en verde, entre comillas, etiquetada como string
NmeroMostrado en azul, sin comillas, etiquetado como number
BooleanoMostrado en mbar, etiquetado como boolean
NuloMostrado en letras grises cursivas, etiquetado como null

Las ramas de objetos y arreglos llevan su propia etiqueta en lugar del nombre del tipo: un objeto ensea cuntas claves posee, un arreglo cuntos elementos, y ambos conteos se actualizan en cada nivel de anidacin. Pegar {"user":{"id":1,"tags":["a","b"]}} ofrece un objeto raz que contiene 1 clave, el cual se expande a un objeto con 2 claves, y uno de ellos es un arreglo que alberga 2 elementos. Cada una de esas partes puede colapsarse por s sola, por lo que una respuesta con docenas de objetos anidados no lo fuerza a desplazarse por todos ellos a la vez.

Las discrepancias de tipos resaltan visualmente en un rbol mientras que se esconden en el texto llano. Un nmero entre comillas que debi ser netamente numrico, o un valor nulo ubicado donde usted aguardaba una cadena vaca, es fcil pasarlo por alto en un muro de JSON formateado, pero resalta de inmediato una vez que est codificado por colores segn su tipo en un esquema expandido.

Seis maneras en que la gente usa realmente esta herramienta

Depurar la respuesta de una API que no se pudo analizar

Pegue el cuerpo de la respuesta y pulse en Validar primero. La posicin exacta del carcter que reporta suele bastar para ir directo a la seccin malformada, una coma faltante o un carcter sin escapar, en lugar de revisar todo el conjunto con la vista.

Limpiar un objeto literal copiado del cdigo fuente de JavaScript

El cdigo copiado desde un archivo de aplicacin a menudo emplea comillas simples y omite poner comillas a las claves en su totalidad, ambas prcticas vlidas en JavaScript pero ninguna vlida en JSON. La herramienta Reparar maneja ambas de manera automtica en los casos directos. Ejecute Validar despus para confirmar que la reparacin efectivamente fabric un JSON analizable en vez de asumir que funcion correctamente.

Reducir un archivo de configuracin antes de desplegarlo

Un archivo manipulado manualmente se beneficia de la legibilidad de Formatear. Ese mismo archivo al agruparse hacia produccin se beneficia de la huella reducida de Minificar. Mantenga una versin de origen formateada y genere la copia minificada al momento de construir, antes que alterar manualmente un archivo de una lnea y difcil de leer cada vez que un valor deba actualizarse.

Inspeccionar un paquete de datos desconocido antes de redactar su tipo

Antes de escribir un analizador o la definicin de un tipo para una respuesta de API indita, pase un fragmento de prueba por la vista de rbol para contemplar su verdadera morfologa: qu campos son objetos en vez de arreglos, cules valores alguna vez se tornan nulos. Un registro inusual, un campo que acta como texto en todos lados a excepcin de un objeto donde se vuelve un nmero, brinca a la vista en un rbol expandido mucho ms rpido que si estuviera frente a una pared de texto comprimido.

Confirmar diferencias legibles en lugar del ruido de lneas enteras

Mantenga siempre los ejemplos de JSON y los archivos de configuracin formateados antes que minificados previo a su entrada al control de versiones. Un archivo de una propiedad por lnea resulta en un reporte de diferencias que le indica al punto cul campo mut; un archivo minificado, en cambio, marca el documento completo como modificado en el segundo en que un mnimo detalle lo hace.

Proteger campos largos de ID del redondeo sigiloso

Si la carga enviada acarrea identificadores del tipo snowflake o llaves mayores de bases de datos bajo forma de nmeros puros, evite realizar el ciclo completo de idas y vueltas a ese campo singular va Formatear, Minificar o Reparar sin cerciorarse de sus dgitos a posteriori. Donde usted est a cargo del esquema, resguardar el ID bajo la apariencia de un texto entre comillas esquiva la frontera de precisin de raz, ya que la lnea de 2^53 afecta exclusivamente a la clase numrica de JSON.

Preguntas Frecuentes

¿Cómo formateo JSON online?
Pega tu JSON y haz clic en "Formatear". La herramienta añade sangría y saltos de línea adecuados para facilitar la lectura.
¿Qué significa minificar JSON?
Minificar elimina todos los espacios en blanco, reduciendo el tamaño del archivo. Esto es útil para APIs donde cargas más pequeñas mejoran el rendimiento.
¿Puede esta herramienta corregir JSON inválido?
¡Sí! Haz clic en "Corregir" para reparar errores comunes como comas finales, comillas simples y claves sin comillas.
¿Mis datos JSON son privados?
Absolutamente. Todo el procesamiento ocurre localmente en tu navegador. Tus datos nunca salen de tu dispositivo.

Herramientas Relacionadas

🔒 100% Privado y Seguro

Todo el procesamiento de JSON ocurre localmente en tu navegador - tus datos nunca se suben. Seguro para claves de API, configuraciones y datos sensibles.