json - 如何使用`jq`将键复制到对象中?
问题描述
我的输入 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(.)
),以便最终结果是日期已被移动到每个对象中。
解决方案
一种方法是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"
}
]
推荐阅读
- java - NullPointerException:尝试调用虚拟方法'void org.apache.cordova.CordovaPlugin.privateInitialize
- python - 合并年和周列以在 python 中创建日期时间和排序
- roku - 如何增加 Roku 的响应时间
- machine-learning - 当标注维度太大,想找另一种方式而不是one-hot编码时
- html - AMP Carousel 不能用于多个项目
- d3.js - D3条形图yaxis缩放问题,我不想要十进制/重复值
- android - 我正在尝试构建一个 Tinder 克隆,在其中我想过滤我在“刷卡”上显示的用户
- json - 如何管理 webhook 数据格式的标准化?
- android - 由于“多个 dex 文件定义”而导致的 Android Studio 3.5.2 项目构建问题
- git - Git Bash - 推送命令错误“CreateProcessW failed error:193”