设置多个值

时间:2015-06-01 02:48:26

标签: json jq

鉴于此文件

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

我想要这个输出:

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

我有这个工作命令:

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

但我宁愿不必重复."[global]"部分。我试过这个 命令,但它只返回部分输入:

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

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

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