json - 使用 jq 选择第 n 个元素之前的元素

标签 json jq

我被 jq 困在了下面的 json 中。下面的元素按某个时间戳降序排序(不包含在 json 中)。我需要在 id X 之前选择 id。在 id 1 之前选择 ids 应返回 2、3 和 5。

[
  {
    "id": 2,
    "somekey": "somevalue"
  },
  {
    "id": 3,
    "somekey": "somevalue"
  },
  {
    "id": 5,
    "somekey": "somevalue"
  },
  {
    "id": 1,
    "somekey": "somevalue"
  },
  {
    "id": 4,
    "somekey": "somevalue"
  }
]

知道如何用 jq 在一行中做到这一点吗?特别是“选择之前的元素”部分。

最佳答案

简短:

.[0: map(.id) | index(1)]

花哨但速度快:

label $top | .[] | if .id == 1 then break $top else . end

关于json - 使用 jq 选择第 n 个元素之前的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48036567/

相关文章:

json - 输出分号分隔的字符串

arrays - 如何使用 jq 过滤不在列表中的选择项?

json - 小写 JSON 中的值

intellij-idea - 哪些IDE支持jq开发?

json - 如何使用 bash 或 jq 在 linux 中解析 Json 文件以设置结果

ruby-on-rails - 如果出现验证错误,如何自定义 respond_with 呈现的 JSON?

PHP PDO 从数据库中检索 json 数组 - 删除不需要的字符

javascript - 递归循环 JSON 数据

jQuery 通过 JSON 自动完成来自 ASMX 的名称/值对

json - 使用 JSON_MODIFY 附加到空白列失败,并出现 "Unexpected character ' .' is found at position 0"错误