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

如何使用Linux命令行JSON解析器jq提取JWT的exp过期时间值?

问题场景

在Debian GNU/Linux 11 (bullseye)环境中使用命令行JSON解析器jq解码JWT格式数据时,原命令会返回JWT头部、载荷的全量键值对,需要修改命令实现仅提取过期时间exp对应的数值。

原执行命令:

jq -R 'split(".") | .[0],.[1] | @base64d | fromjson' <<< eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE2NTUzODQ4MzJ9.QVevY3qVLWHxfkNX1S4bas6PKSN75Nf96V7WmkcgbrE

原命令返回结果:

{
  "alg": "HS256",
  "typ": "JWT"
}
{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022,
  "exp": 1655384832
}
解决方法

JWT的过期时间字段存储在以.分割的第二段(索引为1)载荷中,不需要解析第一段头部内容,解析完载荷段的JSON后直接提取.exp字段即可。

修改后的命令:

jq -R 'split(".") | .[1] | @base64d | fromjson | .exp' <<< eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE2NTUzODQ4MzJ9.QVevY3qVLWHxfkNX1S4bas6PKSN75Nf96V7WmkcgbrE

命令执行后直接输出目标值:

1655384832

核心改动点:

  • 移除原过滤规则中的.[0],跳过JWT头部段的解析,仅处理载荷段
  • 在过滤规则末尾增加| .exp,直接从解析后的载荷JSON中提取过期时间字段,不再返回全量键值对

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:39:20