You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JSONPath筛选对应当前周的JSON对象?

用JSONPath筛选对应当前周的JSON对象

问题背景

给定按周划分的JSON数组:

[
  {
    "valutakode": "EUR",
    "valutabeskrivelse": "EURO",
    "valutakurs": "10,390",
    "omregningsenhet": 1,
    "fomdato": "2022-10-31",
    "tomdato": "2022-11-06"
  },
  {
    "valutakode": "EUR",
    "valutabeskrivelse": "EURO",
    "valutakurs": "10,180",
    "omregningsenhet": 1,
    "fomdato": "2022-11-07",
    "tomdato": "2022-11-13"
  }
]

需要筛选出与当前周对应的JSON对象,能否通过JSONPath实现?

实现方案

可以实现,但效果取决于你使用的JSONPath引擎(不同版本对日期处理的支持差异较大):

1. 支持日期函数/动态参数的JSONPath引擎(如Jayway JsonPath)

这类引擎允许直接进行日期区间比较,甚至支持动态获取当前日期。

  • 核心思路:检查当前日期是否落在目标对象的fomdato(起始日期)和tomdato(结束日期)之间
  • 示例表达式:
    $[?(@.fomdato <= $currentDate && @.tomdato >= $currentDate)]
    
    其中$currentDate可以替换为当前日期的字符串(格式需与JSON中一致,如"2022-11-08"),部分引擎还支持直接调用日期函数(如Jayway的$now()),但需注意将函数返回值转换为YYYY-MM-DD格式后再比较。

2. 基础版JSONPath引擎(无日期处理支持)

这类引擎仅支持基础的字符串和数值比较,无法动态获取当前日期,需手动传入当前周的关键参数:

  • 方式一:直接匹配当前周的起止日期
    $[?(@.fomdato == "2022-11-07" && @.tomdato == "2022-11-13")]
    
  • 方式二:传入当前日期,筛选包含该日期的周对象
    $[?(@.fomdato <= "2022-11-08" && @.tomdato >= "2022-11-08")]
    

注意事项

  • 必须保证JSON中的日期格式(YYYY-MM-DD)与筛选时传入的日期格式完全一致,否则字符串比较会失效
  • 不同JSONPath引擎的语法细节可能有差异(比如部分引擎要求字符串用单引号),需结合你使用的具体工具或库调整表达式

内容的提问来源于stack exchange,提问作者Christian Rockrohr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:45:35