如何使用jq过滤JSON对象数组? [英] How to filter an array of JSON objects with jq?
本文介绍了如何使用jq过滤JSON对象数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下JSON输入:
I have the following JSON input:
{
"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
的值选择数组的对象.
First I want to select an array by a property name. And then I want to select an object of the array by the value of the property InstanceType
.
属性zk_kafka
和值t2.medium
的示例:
{
"InstanceType": "t2.medium",
"zkMemory": "16",
"kafkaMemory": "8"
}
我知道如何选择数组:
jq .zk_kafka
但是我不知道如何通过属性值来过滤对象数组.
But I do not know how to filter the array of object by a property value.
推荐答案
使用jq
的select
过滤器:
jq '.zk_kafka | .[] | select(.InstanceType == "t2.medium")'
使用--arg
选项将参数传递给查询.
Use the --arg
option to pass an argument to the query.
jq --arg instance "t2.medium" '.zk_kafka | .[] | select(.InstanceType == $instance)'
这篇关于如何使用jq过滤JSON对象数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文