jq - 如何基于其他值使用 jq 向 JSON 添加新字段
问题描述
假设我有以下 JSON:
{
"Address": "myaddress1.com",
"Port": 6379
},
{
"Address": "myaddress2.com",
"Port": 6379
}
我想连接端口和地址,并预先和附加一些仅使用 jq 实现的文本。例如,我希望新输出为:
{
"Address": "myaddress1.com",
"Port": 6379,
"FullAddress": "redis://myaddress1.com:6379
},
{
"Address": "myaddress2.com",
"Port": 6379,
"FullAddress": "redis://myaddress2.com:6379
}
这是否可能仅使用 JQ 或者我需要使用脚本语言?
解决方案
假设您的输入文件实际上是一个对象数组,那么以下内容可能对您有用:
$ jq 'map(. + { "FullAddress": "redis://\(.Address):\(.Port)" })' input.json
[
{
"Address": "myaddress1.com",
"Port": 6379,
"FullAddress": "redis://myaddress1.com:6379"
},
{
"Address": "myaddress2.com",
"Port": 6379,
"FullAddress": "redis://myaddress2.com:6379"
}
]
推荐阅读
- oracle - 在Oracle SQL中提取长度大于4000的BLOB
- c# - 通过 Lambda 函数在 SQS FIFO 中排队
- ios - (MVVM)每个视图或每个模型的视图模型?
- c# - SqlCommand 中的查询更改时,SqlDependency OnChangeEventHandler 未触发
- python - 作为目标执行方法的线程会发生什么
- vue.js - 在文档 (DOM) 中创建 div 的问题
- java - 如何停止在我的 chromedriver 中阻止重定向?
- c# - 使用 contains 关键字删除所有缓存
- c - 无法在 Oracle Pro*C 中测试空值
- python - 我的代码有什么问题来获得 MAXEnt 的权重