Json 如何使用“jq”将密钥复制到对象中?

Json 如何使用“jq”将密钥复制到对象中?,json,bash,key,jq,data-manipulation,Json,Bash,Key,Jq,Data Manipulation,我的输入JSON如下所示: { "2018-05-15T22:00:00Z": { "foo": "0.0", "bar": "90.0" }, "2018-05-15T22:30:00Z": { "foo": "0.0", "bar": "70.0" } } 我想将键(即datetime)复制到对象本身中,最终得到: { "2018-05-15T22:00:00Z": { "date": "2018-05-15T22:00:00Z"

我的输入JSON如下所示:

{
  "2018-05-15T22:00:00Z": {
    "foo": "0.0",
    "bar": "90.0"
  },
  "2018-05-15T22:30:00Z": {
    "foo": "0.0",
    "bar": "70.0"
  }
}
我想将键(即datetime)复制到对象本身中,最终得到:

{
  "2018-05-15T22:00:00Z": {
    "date": "2018-05-15T22:00:00Z",
    "foo": "0.0",
    "bar": "90.0"
  },
  "2018-05-15T22:30:00Z": {
    "date": "2018-05-15T22:30:00Z",
    "foo": "0.0",
    "bar": "70.0"
  }
}

然后,我将外部对象折叠成一个数组(使用
映射(.)
),这样最终的结果是日期已移动到每个对象中。

一种方法是使用
to_entries
将项目拆分为一个键/值对,之后可以直接引用每个项目

$ jq '[to_entries[] | .key as $time | .value | .["time"]=$time]' <<<"$in"
[
  {
    "foo": "0.0",
    "bar": "90.0",
    "time": "2018-05-15T22:00:00Z"
  },
  {
    "foo": "0.0",
    "bar": "70.0",
    "time": "2018-05-15T22:30:00Z"
  }
]

$jq'[to_entries[]|.key as$time |.value |。[“time”]=$time]'稍微经济一些:

with_entries(.value = ({date: .key} + .value))
这将根据Q发射对象