У меня уже есть грубое решение этой проблемы, но я впервые работаю с JQ, и я чувствую, что результат немного неуклюжий, и я хотел бы получить совет о том, как его очистить, или предложения, как Я мог бы использовать больше идиоматических c форм.
У меня есть swagger спецификация интерфейса ( полный файл здесь ), и я хочу извлечь информацию для каждого из пути, поддерживаемые методы и типы содержимого, ожидаемые в каждом случае
Например, из:
{
"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
Большое спасибо