json - jq 按日期过滤json

标签 json jq

我有一些看起来像这样的 json

 {
  "users":[ {  
     "id":8734,
     "last_login":"2016-10-04T06:59:40Z"
  },
  {  
    "id":9376,
    "last_login":"2016-05-04T20:37:32Z"
  },
  {  
    "id":9376,
    "last_login":null
  }
]}

我想返回上次登录日期 > 90 天的 ID,因此在这种情况下它应该只返回 9376。我想我需要将 fromdateiso8601 与选择结合使用,但在正确使用语法时遇到了一些麻烦。

这似乎有效
.users[] | select ( .last_login | fromdateiso8601 > 1475625600) | .id 

但我仍然得到
jq: error (at <stdin>:0): strptime/1 requires string inputs and arguments

我如何处理空值,理想情况下这些将包含在结果中。

最佳答案

只需添加适当的空检查。

.users[] | select (.last_login | . == null or fromdateiso8601 > 1475625600).id 

关于json - jq 按日期过滤json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39881728/

相关文章:

json - 如何使用 jq 查找 JSON 对象中值符合给定条件的所有路径?

python - 将 json 数组中的键追加(映射)到另一个子数组

json - jq - 选择后获取更高级别的 key

php - 如何从此 JSON 数组获取变量值?

javascript - 在网页上显示来自本地 json 文件的数据

javascript - 循环javascript Node js中的异步函数

json - 如何使用 Bash 创建包含来自许多文件的同一行的值的数组?

json - 移动 jq 中的嵌套值

java - 使用多个数组解析 Json 对象并添加到列表中

json - 在Powershell中遍历JSON数据