如何使用jq转换嵌套对象?

时间:2019-07-04 12:48:36

标签: json shell jq

我有一个json对象,形式为:

{
  ...
  objectx: {
    nested_obj1: {
      key1: value1
    },
    nested_obj2: {
      key2: value2
    },
    ...
  },
  ...
}

。我需要使用jq向keyX: valueX中的所有nested_obj添加一个objectx

我试图使用.objectx | map(.+{keyX: valueX})应用地图过滤器,但无法弄清楚如何将此过滤后的列表存储到原始json对象中。我该如何实现?

1 个答案:

答案 0 :(得分:2)

选择要更新的对象(objectx对象的值)并设置所需的值。 map设计用于数组,而不是对象。 map_values可以代替。

.objectx |= map_values(.keyX = $valueX)

我个人更喜欢这样做:

.objectx[].keyX = $valueX

请注意,在对象上使用[]将产生该对象的所有值。