Saltar al contenido

¿Cómo fusionar 2 objetos JSON de 2 archivos usando jq?

Siéntete libre de compartir nuestra web y códigos en tus redes sociales, danos de tu ayuda para ampliar esta comunidad.

Solución:

Desde 1.4 esto ahora es posible con el * operador. Cuando se le den dos objetos, los fusionará recursivamente. Por ejemplo,

jq -s '.[0] * .[1]' file1 file2

Importante: Tenga en cuenta la -s (--slurp) flag, que coloca los archivos en el mismo array.

te conseguiría:


  "value1": 200,
  "timestamp": 1382461861,
  "value": 
    "aaa": 
      "value1": "v1",
      "value2": "v2",
      "value3": "v3",
      "value4": 4
    ,
    "bbb": 
      "value1": "v1",
      "value2": "v2",
      "value3": "v3"
    ,
    "ccc": 
      "value1": "v1",
      "value2": "v2"
    ,
    "ddd": 
      "value3": "v3",
      "value4": 4
    
  ,
  "status": 200

Si también quieres deshacerte del otro keys (como el resultado esperado), una forma de hacerlo es esta:

jq -s '.[0] * .[1] | value: .value' file1 file2

O presumiblemente algo más eficiente (porque no fusiona ningún otro valor):

jq -s '.[0].value * .[1].value | value: .' file1 file2

Usar jq -s add:

$ echo '"a":"foo","b":"bar" "c":"baz","a":0' | jq -s add

  "a": 0,
  "b": "bar",
  "c": "baz"

Esto lee todos los textos JSON de stdin en un array (jq -s hace eso) entonces los “reduce”.

(add Se define como def add: reduce .[] as $x (null; . + $x);que itera sobre la entrada array’s/valores del objeto y los agrega. Adición de objetos == fusionar.)

Quién sabe si todavía lo necesitas, pero aquí está la solución.

Una vez que llegas a la --slurp opción, es fácil!

--slurp/-s:
    Instead of running the filter for each JSON object in the input,
    read the entire input stream into a large array and run the filter just once.

Entonces el + El operador hará lo que quieras:

jq -s '.[0] + .[1]' config.json config-user.json

(Nota: si desea fusionar objetos internos en lugar de simplemente sobrescribir los del archivo de la izquierda con los del archivo de la derecha, deberá hacerlo manualmente)

valoraciones y comentarios

Si sostienes algún recelo y capacidad de acrecentar nuestro división te insinuamos escribir una ilustración y con placer lo observaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *