json - 如何使用 jq 过滤 JSON 对象数组?

标签 json jq

我有以下 JSON 输入:

{
  "zk_kafka": [
    {
      "InstanceType": "t2.medium",
      "zkMemory": "16",
      "kafkaMemory": "8"
    },
    {
      "InstanceType": "t2.small",
      "zkMemory": "8",
      "kafkaMemory": "4"
    }
  ],
  "es_hdfs": [
    {
      "InstanceType": "t2.medium",
      "esMemory": "16",
      "hdfsMemory": "8"
    },
    {
      "InstanceType": "t2.small",
      "esMemory": "8",
      "hdfsMemory": "4"
    }
  ]
}

首先,我想通过属性名称选择一个数组。然后我想通过属性 InstanceType 的值选择数组的一个对象.

属性示例 zk_kafka和值 t2.medium :
{
  "InstanceType": "t2.medium",
  "zkMemory": "16",
  "kafkaMemory": "8"
}

我知道如何选择数组:
jq .zk_kafka

但我不知道如何通过属性值过滤对象数组。

最佳答案

使用 select jq 的过滤器:

jq '.zk_kafka | .[] | select(.InstanceType == "t2.medium")'
使用 --arg选项将参数传递给查询以避免注入(inject)。
jq --arg instance "t2.medium" '.zk_kafka | .[] | select(.InstanceType == $instance)'
jq有一个 manual , 一个 tutorialcookbook .

关于json - 如何使用 jq 过滤 JSON 对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070012/

相关文章:

java - 将无状态 session bean 注入(inject)自定义 JsonDeserializer 失败

json - 在 bash 中使用 jq 在 json 文档上链接 select 和 max_by

json - JQ 转 CSV 问题

json - 将参数传递给 jq 过滤器

Json解析映射key

java - Jackson + reSTLet + tomcat - 无法注册助手 org.reSTLet.ext.jackson.JacksonConverter

python - 如何读取这个 JSON 文件?

php - 如何使用php每3小时将json信息保存到数组中?

json - 使用 jq 从嵌套的 JSON 对象中提取选定的属性

json - 如何获取 "number"数组项?