首页 > 解决方案 > 当给定一个具有两个兄弟属性的对象时,使用 jq 如何创建一个新对象,其中兄弟属性被移动为子属性?

问题描述

我有以下形式的对象数组:

{
    "alpha": {
        "beta": "gamma",
        "delta": "epsilon"
    },
    "zeta": {
        "eta": "theta",
        "iota": "kappa"
    }
}

使用jq,我想将此对象转换为以下形式:

{
    "alpha": {
        "beta": "gamma",
        "delta": "epsilon",
        "zeta": {
            "eta": "theta",
            "iota": "kappa"
        }
    },
}

我怎么做?我对jq's语法不是特别熟悉,并且手册没有提供任何明确的答案,至少据我所知。

提前致谢!

标签: jsonjq

解决方案


$ jq '{alpha: (.alpha + {zeta})}' tmp.json
{
  "alpha": {
    "beta": "gamma",
    "delta": "epsilon",
    "zeta": {
      "eta": "theta",
      "iota": "kappa"
    }
  }
}

{zeta}是 的简写{zeta: .zeta}


推荐阅读