设置多个值

Set multiple values

鉴于此文件

{
  "[global]": {
    "current": "",
    "hash": ""
  }
}

我想要这个输出:

{
  "[global]": {
    "current": "alpha",
    "hash": "bravo"
  }
}

我有这个工作命令:

jq '."[global]".current="alpha" | ."[global]".hash="bravo"' example.json

不过,我不想重复 ."[global]" 部分。我试过这个 命令,但它只是输入的 returns 部分:

$ jq '."[global]" | .current="alpha" | .hash="bravo"' example.json
{
  "current": "alpha",
  "hash": "bravo"
}

对象的multiplication递归合并两者。您可以将 [global] 对象与具有新值的对象合并。结果中将使用 RHS 上的字符串值。

."[global]" *= { current: "alpha", hash: "bravo" }

加法也适用于此,但乘法通常更有用,尤其是对于嵌套对象。不是替换相应的对象,而是将它们合并。

Jeff 所示,非递归+= 运算符也适用于这种情况。具体来说:

  ."[global]" += {current: "alpha", hash:"bravo"}