JQ:添加具有顶级键名称的嵌套对象

  • 本文关键字:嵌套 对象 添加 JQ jq
  • 更新时间 :
  • 英文 :


在JQ 1.4…中输入

{
    "key x": {
        "b": "1"
    },
    "key y": {
        "b": "1"
    }
}

应在每个具有顶级键名称的顶级键下添加新的嵌套对象。所以结果看起来像

{
    "key x": {
        "a": "key x",
        "b": "1"
    },
    "key y": {
        "a": "key y",
        "b": "1"
    }
}

但是没有直接使用密钥名称(例如,"key x".a="key x"),因为在运行时我不知道真正的密钥名称。

一个简单的答案是:

with_entries(.value.a = .key)

是的,找到了解决方案:

to_entries  | map( {(.key): ({a: .key}+.value)} ) | add

将返回

{
  "key x": {
    "a": "key x",
    "b": "1"
  },
  "key y": {
    "a": "key y",
    "b": "1"
  }
}

to_entries拆分为键/值对,这样更容易访问每个键并通过新对象扩展其值。

最新更新