以下是api的json响应。需要使用jq(在shell脚本内)从json获取汇率。 以下是条件: 对于给定的currencyfrom和currencyto,开始日期应等于或大于当前日期,结束日期应等于或小于当前日期。
[
{
"status": "ACTIVE",
"startdate": "2019-01-31T00:00:00.000Z",
"enddate": "2019-02-07T00:00:00.000Z",
"source": "default",
"exchangerate": "12",
"currencyfrom": "AUD",
"currencyto": "BRL",
"id": "64ce2916-af8a-42b9-9fb9-def47f824ea2"
},
{
"status": "ACTIVE",
"startdate": "2019-03-10T00:00:00.000Z",
"enddate": "2019-03-30T00:00:00.000Z",
"source": "default",
"exchangerate": "13",
"currencyfrom": "BRL",
"currencyto": "GBP",
"id": "4fd0dc10-d6b7-4298-924d-281a0d49c2e9"
},
{
"status": "ACTIVE",
"startdate": "2019-03-10T00:00:00.000Z",
"enddate": "2019-03-10T16:20:10.813Z",
"source": "default",
"exchangerate": "17",
"currencyfrom": "AUD",
"currencyto": "BRL",
"id": "52bfe481-f4cf-4822-9566-886c4faeaf10"
}
]
答案 0 :(得分:1)
忽略时区注意事项,您可以将以下辅助功能用作时间比较的基本构件:
def secs: sub("\\....(?<z>.)$"; .z) | fromdate;
使用它,您可以在数组中选择JSON对象,同时保留数组结构,如下所示:
now as $now
| map(select(.startdate|secs) <= $now and $now <= (.enddate|secs)) )
这与您的描述不太吻合,但确实有道理。
选择对象后,您可以按照通常的方式提取感兴趣的字段。