Por qué 9007199254740993 se convierte en otro ID
Leer este JSON con JSON.parse y escribirlo con JSON.stringify cambia el último dígito de id. También convierte 1.00 en 1 y 1e3 en 1000. Estos dos cambios conservan el valor numérico; el cambio del ID pierde el entero original.
const source = '{"id":9007199254740993,"price":1.00,"scale":1e3}';
JSON.stringify(JSON.parse(source));
// {"id":9007199254740992,"price":1,"scale":1000}El máximo entero seguro de JavaScript Number es 9007199254740991. No todos los enteros mayores se redondean, pero enteros distintos pueden convertirse en el mismo valor Number. Distingue la sintaxis numérica de JSON de los límites de precisión de cada analizador.
ECMAScript: Number.MAX_SAFE_INTEGER
Claves duplicadas: sintaxis válida no implica interoperabilidad
Si mode aparece dos veces en un objeto, JSON.parse sustituye el valor anterior por el posterior. RFC 8259 recomienda nombres únicos y explica que distintos programas pueden tratar los duplicados de forma diferente. No supongas que todos los analizadores actúan igual.
JSON.stringify(JSON.parse('{"mode":"first","mode":"last"}'));
// {"mode":"last"}Moyoutil no elimina automáticamente las claves duplicadas. Conservarlas no significa recomendarlas. Revisa el sistema receptor y el contrato de datos, y resuelve los nombres duplicados al crear el original.
Validar con Moyoutil sin cambiar la notación original
formatJSON comprueba la sintaxis con JSON.parse, pero crea la salida a partir de los tokens originales, no del objeto analizado. Conserva enteros grandes, notación decimal y exponencial, claves duplicadas y su orden. La salida puede diferir en bytes: cambian espacios y saltos de línea. Minimizar no elimina espacios dentro de las cadenas.
formatJSON('{"id":9007199254740993,"price":1.00,"scale":1e3}', 0).output
// {"id":9007199254740993,"price":1.00,"scale":1e3}Guarda el original, pégalo en la herramienta JSON y formatea o minimiza. Compara los IDs importantes y la notación numérica antes de descargar. Editar la entrada borra el resultado y desactiva la copia; valida otra vez. La entrada admite hasta 2MiB en UTF-8 y 128 niveles de anidamiento.
Validar la sintaxis no comprueba reglas de negocio, JSON Schema ni la interpretación del servidor. Convertir un número en cadena cambia el tipo y no es una solución automática. Confirma primero si el contrato permite IDs de texto. Reproduce el problema con datos ficticios, sin claves secretas reales ni información personal.
Preguntas frecuentes
¿La validación garantiza conservar los números en otro servidor?
No. La herramienta conserva la notación, pero el servidor que la analiza como números aplica los límites de precisión de su analizador.
¿Minimizar JSON crea un ZIP?
No. Genera texto JSON con menos espacios sintácticos y saltos de línea innecesarios. No crea un archivo ZIP.