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

时间:2015-11-14 10:57:23

标签: 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"
    }
}

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

2 个答案:

答案 0 :(得分:2)

一个简单的答案是:

with_entries(.value.a = .key)

答案 1 :(得分:0)

是的,找到了解决方案:

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

将返回

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

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