gpt4 book ai didi

json - 使用 jq 从 swagger json 中提取路径、方法和内容类型

转载 作者:行者123 更新时间:2023-12-04 10:44:24 25 4
gpt4 key购买 nike

我已经对这个问题有了一个粗略的解决方案,但这是我第一次使用 JQ,我觉得结果有点笨拙,我想知道如何清理它,或者建议如何我可能会使用更多惯用形式。

我有一个 swagger接口(interface)规范 ( full file here ),我想提取每个路径的信息、支持的方法和每种情况下预期的内容类型

例如,来自:

{
"paths" : {
"/1.0/kb/paymentGateways/hosted/form/{accountId}" : {
"post" : {
"produces" : [
"application/json"
],
"consumes" : [
"application/json"
]
}
}

我想生产:

{
"path": "/1.0/kb/paymentGateways/hosted/form/{accountId}",
"method": "post",
"produces": "application/json",
"consumes": "application/json"
}

这是我用来执行此操作的 jq 查询:

jq 'def nvl(n): (n//[null])[];'\
'.paths | keys[] as $path | .[$path] | keys[] as $method | .[$method] | '\
'{ $path, $method, produces: nvl(.produces), consumes: nvl(.consumes)}' swagger.json

非常感谢

最佳答案

除了格式化之外,您还可以考虑将 nvl 定义为 0 元数过滤器(更惯用且更高效)或完全避免使用它。假设有一个 bash 或类似 bash 的 shell,您可以这样写:



jq 'def nvl: (.//[null])[];
.paths
| keys_unsorted[] as $path
| .[$path]
| keys_unsorted[] as $method
| .[$method]
| { $path,
$method,
produces: .produces | nvl,
consumes: .consumes | nvl
}' swagger.json

也考虑使用 -f 命令行选项。

请注意,false//0 的计算结果为 0,因此您可能需要相应地修改 def。防范其他潜在的意外可能也是明智的。

关于json - 使用 jq 从 swagger json 中提取路径、方法和内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59774043/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com