如何在Bash中处理JSON响应并筛选created_at为当前日期的对象
过滤JSON中指定日期对象的实现方案
首选工具:jq 轻量命令行JSON处理工具
如果是在命令行直接处理API返回结果,jq 是最高效的选择,无需编写完整脚本,一行命令即可完成过滤,非常适合管道流式处理场景。
命令示例:
# 直接对接API请求时的完整管道命令 curl <你的API请求地址> | jq --arg curr_date "$(date -I)" 'map(select(.created_at[:10] == $curr_date))'
逻辑说明:
date -I会输出当前UTC日期的YYYY-MM-DD格式字符串,通过--arg参数传入jq作为变量$curr_datemap(select(...))遍历JSON数组,匹配每个元素created_at字段前10位的日期部分和当前日期一致的对象,最后保留原数组结构输出
备选方案:Python 内置模块处理
如果已经在Python代码中调用该API,可以直接用标准库完成过滤,无需额外安装依赖:
import json from datetime import datetime # 假设api_resp是调用API获取到的JSON字符串 raw_data = json.loads(api_resp) # 注意created_at带Z后缀为UTC时间,需用utcnow对齐时区 today_utc = datetime.utcnow().strftime("%Y-%m-%d") # 过滤符合条件的对象 result = [item for item in raw_data if item["created_at"].startswith(today_utc)]
注意事项
- 时区对齐:示例中
created_at带Z标识属于UTC时间,获取当前日期时必须对应UTC时区,否则会出现跨时区日期匹配错误的问题 - 若需要输出JSON格式的过滤结果,Python侧可直接用
json.dumps(result)导出,jq侧默认已经输出标准JSON格式
内容的提问来源于stack exchange,提问作者Maksym Iliev
相关产品推荐
相关产品推荐

