JMESPath查询Fortigate防火墙API:如何移除日期中的时间部分?
解决JMESPath截断ISO日期字符串的问题
针对你查询Fortigate REST API时需要提取日期部分的需求,有两种直接的JMESPath实现方式:
方法1:使用split函数分割字符串
利用split将日期字符串按T分割,取分割后的第一个元素:
Licensing.forticare.support.hardware.[expires_r] | map(&split('T', @)[0], @)
- 逻辑:
split('T', @)把每个ISO日期字符串拆分为["2025-12-04", "00:00:00.000Z"],[0]提取前半部分日期。 map函数用来遍历数组中的每一个日期元素,统一处理格式。
方法2:使用substring截取固定长度
因为YYYY-MM-DD格式的日期固定为10个字符,直接截取前10位:
Licensing.forticare.support.hardware.[expires_r] | map(&substring(@, 0, 10), @)
- 逻辑:
substring(@, 0, 10)从每个字符串的起始位置(索引0)截取到第10个字符,刚好保留日期部分。
两种方法都能直接得到你需要的结果:
[ "2025-12-04" ]
内容的提问来源于stack exchange,提问作者ChristopherDill
相关产品推荐
相关产品推荐

