JQ простой JSON объект слияния / комбинации - PullRequest
0 голосов
/ 19 октября 2018

a.json

{"a": 1}

b.json

{"b": 1}

Желаемый результат

{"a": 1, "b": 1}

jq -s "."a.json b.json

[
  {
    "a": 1
  },
  {
    "b": 1
  }
]

Он заключен в массив


jq "."a.json b.json

{
  "a": 1
}
{
  "b": 1
}

Это даже не верно json


Является ли jq неправильным инструментом здесь?Что более уместно?

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

В некоторых случаях может быть желательно избегать «прихлебывания» объектов, так как для этого требуется больше памяти, чем необходимо.

В любом случае, чтобы выполнить задачу экономно, используйте -n вместе с inputs следующим образом:

reduce inputs as $i ({}; . + $i)

sigma / 1

Если вы неИмейте в виду, что sigma(empty) оценивается как null, вы можете определить полиморфный sigma следующим образом:

def sigma(s): reduce s as $x (null; . +$x);

Это работает с потоками чисел, потоками объектов, потоками массивов и потокамистроки и т. д. подойдут для вашей стандартной библиотеки.

В любом случае, с этим определением для текущей задачи вы можете написать: simga(inputs).

0 голосов
/ 19 октября 2018

Попробуйте:

jq -s 'add' a.json b.json

Результат:

{
  "a": 1,
  "b": 1
}
...