Saltar al contenido

Convertir objetos JSON5 a JSON — Numio

Convierte un literal de objeto JavaScript en JSON estricto con sangría de 2 espacios. Se aceptan y normalizan claves sin comillas, comillas simples, comentarios, comas finales, números hexadecimales y decimales que empiezan por punto.

Copiar un objeto de configuración o de fixture de un archivo .js a un archivo JSON, al cuerpo de una petición a una API o a una colección de Postman.

Admite JSON y JSON5, incluidos comentarios, comillas simples y comas finales. No se ejecutan funciones ni expresiones JavaScript.

JS Object

JSON

Cuándo usarla

  • Copiar un objeto de configuración o de fixture de un archivo .js a un archivo JSON, al cuerpo de una petición a una API o a una colección de Postman.
  • Limpiar un objeto pegado desde las DevTools del navegador o desde la documentación para que lo acepte un parser JSON estricto.

Cómo usarla

  1. Pega el literal de objeto (solo los datos, sin declaración de variable ni punto y coma final) en el editor izquierdo, o usa el botón de cargar archivo para abrir un archivo UTF-8.
  2. El JSON aparece a la derecha mientras escribes; si aparece un error como "invalid character", revisa la línea y la columna indicadas.
  3. Revisa los valores convertidos (los hexadecimales pasan a decimales y las comillas a comillas dobles) y copia el resultado.

Literal de objeto JavaScript

{
  // Mongoose-style field definition
  title: {
    type: 'String',
    required: true,
  },
  year: { type: 'Number', max: 0x7E6 },
  tags: ['draft', 'review',],
  ratio: .75,
  'content-type': "text/plain",
}

JSON

{
  "title": {
    "type": "String",
    "required": true
  },
  "year": {
    "type": "Number",
    "max": 2022
  },
  "tags": [
    "draft",
    "review"
  ],
  "ratio": 0.75,
  "content-type": "text/plain"
}

Detalles y limitaciones

La entrada se analiza con el parser JSON5 en tu navegador; el código nunca se ejecuta. Las expresiones, funciones, new Date(), template literals, undefined y las referencias a variables se rechazan como caracteres no válidos.

NaN e Infinity se rechazan con un error porque JSON no puede representarlos.

No se conservan los comentarios ni el formato original de las claves; la salida siempre usa comillas dobles y sangría de 2 espacios.

Los enteros mayores que 2^53 pierden precisión (12345678901234567890 se convierte en 12345678901234567000). Pon los ID grandes entre comillas como cadenas.

FAQ

¿Puedo pegar const config = { ... };?

No. Solo se acepta el valor. Quita la declaración y el punto y coma final; si no, el parser informa de un carácter no válido en esa posición.

¿Qué pasa con las claves duplicadas?

Gana la última aparición. {a: 1, a: 2} se convierte en {"a": 2} sin ningún aviso, así que revisa los objetos combinados a mano.

¿Acepta arrays o valores sueltos en la raíz?

Sí. Funciona cualquier valor JSON5; por ejemplo, [1, 2,] se convierte en un array JSON de dos elementos y 'hi' en "hi".

Especificaciones y referencias