在给定位置合并对象?

时间:2017-02-15 23:14:48

标签: json jq

我有以下对象:

{
  "exported_modules": ["a", "b"],
  "modules": {
    "a": {
      "name": "thing b"
    }
 }
}

它们存在于单独的文件中。我需要基本上对它们进行转换,使它们在以下状态下输出统一:

.modules.a

基本上我需要将展览b的内容插入jq。有没有办法在jq中这样做?不幸的是,我在x = [a,b] y = [c,d] 1.3上,这是由我的发行版提供的。

我一直在尝试what has been recommended here,但我无法合并到特定位置,而只是合并所有密钥。

1 个答案:

答案 0 :(得分:0)

jq 1.3很古老,因此使用该版本的解决方案相当不优雅。也许最好的方法是" slurp"这两个文件:

jq1.3 -s '.[1] as $o | .[0] | .modules.a = $o' exhibit-a.json exhibit-b.json

这也适用于更高版本,但为了比较,使用jq 1.4或更高版本,可以写:

jq --argfile modules exhibit-a.json '
  . as $in | $modules | .modules.a = $in' exhibit-b.json