Json 如何使用“jq”将密钥复制到对象中?
我的输入JSON如下所示: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"
{
"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发射对象