如何解决解析 JSON jq 只返回键而不返回值
假设我有这个:
https://api.apis.guru/v2/specs/adyen.com/CheckoutService/64/openapi.json
我想抢:
/orders
/orders/cancel
/originKeys
/paymentLinks
/paymentLinks/{linkId}
/paymentMethods
/paymentMethods/balance
/paymentSession
/payments
/payments/details
/payments/result
我想以一种优雅的方式做到这一点,只是抓住路径,我正在做的是这个丑陋的解决方法,它不适用于某些 api:
curl -A "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:86.0) Gecko/20100101 Firefox/86.0" -ks "https://api.apis.guru/v2/specs/adyen.com/CheckoutService/64/openapi.json" | jq -r '.paths' | grep "/" | grep "{" | egrep -iv "microsoft|amz|application/json|application/jwt|\*|text/xml|text/plain|application/|multipart/form-data|text/html" | cut -d "\"" -f 2
解决方法
使用 jq
:
$ jq -r '.paths | keys | .[]' openapi.json
/orders
/orders/cancel
/originKeys
/paymentLinks
/paymentLinks/{linkId}
/paymentMethods
/paymentMethods/balance
/paymentSession
/payments
/payments/details
/payments/result
在您的情况下,您当然希望将 curl
输出通过管道传输到 jq
,而不是使用文件。
与您使用 jq
相比的导入位是将 .paths
数组输送到 keys
并将其输送到 .[]
以获得每行一个元素而不是 JSON 数组,和 -r
以避免将每一行打印为带引号的 JSON 字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。