1
使用jq我想测试下面JSON中特定键值的出现情况,例如“WARNING”已经作为'严重性“的值(即使一次),无论返回的对象的数量如何,我返回一个布尔值。为了简单起见,我有2个对象的下面,但它可能是2000jq - 如何在JSON响应中测试特定值的出现
{
"events": [
{
"severity": "WARNING",
"status": "",
"time_raised": "1454502910919",
"data_1": "00000000",
"data_2": "00000000",
"data_3": "00000000",
"register_0": "40000",
"register_1": "4",
"register_2": "10",
"register_3": "0"
},
{
"severity": "ERROR",
"status": "",
"time_raised": "1454502840915",
"data_1": "00000000",
"data_2": "00000000",
"data_3": "00000000",
"register_0": "50000",
"register_1": "4",
"register_2": "8",
"register_3": "0"
}
]
}
我的方法是使用“包含”像这样
jq .events[]|.severity|contains("WARNING")
滤波器,可输出
true
false
尝试由于我想要返回一个布尔值,我试图在使用'contains'之前将这些值合并成单个字符串或数组,但是我找不到这样做的方法。
我宁愿保持jq的逻辑,所以我希望我已经错过了树木的木材,并有一个简单的方法,在jq做到这一点。您的方法
我认为OP的例子中引入了“contains”,这是因为试图将所有'.severity'值合并为一个; 'jq'.events |任何(.severity ==“WARNING”)“'应该就足够了。 –