我的输入JSON如下所示:
{
"2018-05-15T22:00:00Z": {
"foo": "0.0",
"bar": "90.0"
},
"2018-05-15T22:30:00Z": {
"foo": "0.0",
"bar": "70.0"
}
}
我想将密钥(即日期时间)复制到对象本身,最终得到:
{
"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"
}
}
然后我将外部对象折叠为一个数组(使用map(.)
),以便最终结果是日期已经移动到每个对象中。
答案 0 :(得分:1)
一种方法是使用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"
}
]
答案 1 :(得分:1)
略微更经济:
with_entries(.value = ({date: .key} + .value))
按照Q。
发出对象