Inicio › Herramientas para desarrolladores › Herramienta para combinar JSON

Herramienta para combinar JSON

Combina dos o más documentos JSON en uno. Elige cómo se unen los arrays y qué valor prevalece cuando la misma clave tiene valores distintos, y revisa cada valor sobrescrito en el informe de conflictos antes de copiar o descargar el resultado.

Última actualización:

Publicidad
Publicidad

Cómo usar Herramienta para combinar JSON

  1. Pega el JSON base en el primer cuadro y el JSON que quieres combinar con él en el segundo, o sube archivos .json.
  2. Añade más entradas si hace falta. Se combinan de izquierda a derecha y de arriba abajo.
  3. Elige el modo y la estrategia para arrays, por ejemplo Fusión profunda con Unión o Combinar por campo clave id.
  4. Define la regla de conflictos: prevalece la entrada posterior (lo habitual para sobrescribir configuraciones) o la anterior (los valores por defecto solo rellenan huecos).
  5. Revisa la pestaña Conflictos y luego copia el resultado o descarga merged.json.

Comparación de estrategias de combinación

Ejemplo: combinar {"tags":["a","b"],"db":{"host":"x","port":1}} con {"tags":["b","c"],"db":{"port":2}}, prevalece la entrada posterior.

Configuracióntags quedadb queda
Fusión profunda + Concatenar["a","b","b","c"]{"host":"x","port":2}
Fusión profunda + Unión["a","b","c"]{"host":"x","port":2}
Fusión profunda + Reemplazar["b","c"]{"host":"x","port":2}
Fusión profunda + Combinar por índice["b","c"] (elemento a elemento){"host":"x","port":2}
Fusión superficial["b","c"]{"port":2} (host se pierde)
JSON Merge Patch (RFC 7396)["b","c"]{"host":"x","port":2}

Usos habituales

  • Configuración por capas: combina config.default.json, luego config.production.json y después las sobrescrituras locales, con prevalece la entrada posterior.
  • Unir páginas de una API: une o concatena los arrays que devuelven los endpoints paginados en un único conjunto de datos.
  • Sincronizar registros: usa Combinar por campo clave id para actualizar los registros existentes y añadir los nuevos sin duplicados.
  • Archivos de traducción: combina primero un en.json base y después un archivo de idioma parcial (prevalece la entrada posterior), para que las cadenas traducidas reemplacen a las inglesas y lo que falte se quede en inglés.
  • Preparar una petición PATCH: previsualiza qué hará un cuerpo application/merge-patch+json con un recurso antes de enviarlo.

Reglas que conviene conocer

  • Se conserva el orden de las claves: las claves de las entradas anteriores van primero y las nuevas se añaden en el orden en que aparecen.
  • La unión y la detección de duplicados comparan valores completos, y el orden de las claves de un objeto no importa ({"a":1,"b":2} es igual a {"b":2,"a":1}).
  • Los números se interpretan como números de JavaScript, así que los enteros mayores que 253 (unos 9 mil billones) pueden perder precisión. Guarda los ID muy grandes como cadenas.
  • Los cuadros de entrada vacíos se omiten, así que puedes dejar entradas de sobra abiertas sin afectar al resultado.

Preguntas frecuentes

¿Qué significa una fusión profunda en JSON?

Una fusión profunda (deep merge) combina los objetos clave por clave en todos los niveles. Si ambas entradas tienen un objeto bajo la misma clave, esos objetos también se combinan, en lugar de que el posterior reemplace al anterior. Solo cuando chocan dos valores que no son ambos objetos (por ejemplo, dos cadenas distintas) la regla de conflictos decide cuál se conserva.

¿Cómo se combinan los arrays?

Depende de la estrategia. Concatenar añade el array posterior después del anterior. Unión hace lo mismo, pero omite los elementos exactamente iguales a uno ya presente. Reemplazar trata el array como un único valor, así que la regla de conflictos elige un array completo. Combinar por índice combina el elemento 0 con el elemento 0, y así sucesivamente. Combinar por clave empareja objetos por un campo como id y combina los que coinciden, añadiendo el resto.

¿Qué es JSON Merge Patch (RFC 7396)?

RFC 7396 define un formato de parche sencillo: el parche se parece al documento de destino, los objetos se combinan de forma recursiva, cualquier clave con valor null se elimina del destino y cualquier otro valor, incluidos los arrays, reemplaza al anterior. Lo usan las API HTTP PATCH con el tipo de contenido application/merge-patch+json y Kubernetes.

¿Qué valor prevalece cuando hay claves en conflicto?

Por defecto prevalece la entrada posterior, que es como funcionan la mayoría de las capas de configuración: primero los ajustes base y luego las sobrescrituras del entorno o del usuario. Elige Prevalece la entrada anterior si el primer documento es el de referencia y los siguientes solo deben rellenar las claves que faltan. Cada decisión aparece en la pestaña Conflictos.

¿Puedo combinar arrays JSON en el nivel superior?

Sí. Si todas las entradas son arrays, la estrategia para arrays se aplica en el nivel superior, así que puedes concatenar listas, crear una unión o combinar registros que comparten un id. Mezclar un objeto y un array en el nivel superior es un conflicto de tipos y la regla de conflictos elige uno de ellos.

¿Es lo mismo que lodash merge u Object.assign?

Object.assign y el operador de propagación son fusiones superficiales, como el modo Superficial de aquí. Lodash merge es una fusión profunda que combina los arrays por índice, lo que equivale a Fusión profunda con Combinar por índice. Ten en cuenta que lodash omite los valores undefined pero no null, lo que equivale a dejar sin marcar la opción de null.

¿Se suben mis archivos?

No. El análisis y la combinación se hacen en JavaScript dentro de tu navegador, así que el JSON nunca sale de tu dispositivo y la herramienta también funciona sin conexión una vez cargada la página.

¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?

Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.

Herramientas relacionadas

Ver todas las de Conversores de datos y formatos de archivo →