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

标签 json select key jq

给定如下所示的 JSON:

{
  "data": [{
    "id": "1a2b3c",
    "info": {
      "a": {
        "number": 0
      },
      "b": {
        "number": 1
      },
      "c": {
        "number": 2
      }
    }
  }]
}

我想要选择一个大于或等于 2 的数字,并且对于该选择,我想要返回 idnumber 的值。我这样做是这样的:

$ jq -r '.data[] | .id as $ID | .info[] | select(.number >= 2) | [$ID, .number]' in.json
[
  "1a2b3c",
  2
]

现在我还想为我的选择返回一个更高级别的 key ,在我的例子中我需要返回c。我怎样才能做到这一点?

最佳答案

假设您希望在输出中使用字符串 "c" 而不是 2,这将起作用:

$ jq '.data[] | .id as $ID | .info | to_entries[] | select(.value.number >= 2) | [$ID, .key]' input.json
[
  "1a2b3c",
  "c"
]

关于json - jq - 选择后获取更高级别的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64806010/

相关文章:

javascript - 无法使用 Ajax Json 响应填充表

c# - 为什么 JsonSerializer 给空?

c - 选择排序算法(C)

键盘shift键有问题

c# - 将公钥存储在 web.config 文件中

javascript - 是否可以运行JavaScript(NodeJS)命令/函数,并在出现错误时让程序继续运行?

java - hibernate : One to many mapping is leading to circular objects

javascript - 使用 javascript 更改点击时的选择值

mysql - 需要调整哪些设置来改进包含大量列和少量联接的 SELECT?

python - 可用于返回值:key的字典类型