json - JQ:执行令牌替换
问题描述
我想text
用ma
. 输入 JSON:
{
"ma":{
"a":"1",
"b":"2",
"c":"3"
},
"mb":{
"a":"11"
},
"text":"https://ph.com?a={a}&b={b}"
}
期望的结果:https://ph.com?a=1&b=2
额外的功劳,我怎样才能让mb
变量优先于ma
变量,以便我的结果文本是:https://ph.com?a=11&b=2
?
我尝试过使用scan
andsub
和 and的组合,walk
但无法弄清楚。
谢谢!
解决方案
定义一个函数以用新值替换标记。
def format($map): gsub("\\{(?<key>[^}]+)\\}"; "\($map[.key])");
有了这个,您就可以传入地图以进行替换。
.ma as $map | .text | format($map)
根据需要更新映射。
(.ma * .mb) as $map | .text | format($map)
推荐阅读
- oracle - 为什么 sql developer(oracle) 中的实时 SQL 监视器让我没有选择?在 sql developer 中查看性能指标的步骤是什么?
- jasper-reports - Jasper 报告 - 获取重复记录
- visual-studio - 可以在不使用 EWDK ISO 的情况下使用 Visual Studio 2019 构建工具 + SDK + WDK 构建 Windows 驱动程序吗?
- ios - ReactNative:在项目目录中找不到“Podfile”
- agora.io - 错误:包 io.agora.rtm 不存在
- c# - Linq 组结果到对象列表
- excel - 使用 VBA 输入公式时出现编译错误
- css - 背景颜色不同偶数行
- jquery - 按多个类过滤点击Jquery
- javascript - 图像没有通过 socket.io 添加到画布上?