我正在使用带有jq的select函数来解析列表中包含特定值的项目。我希望结果输出是一个json列表,但是jq单独给了我这些对象:
示例:
$ a='{
"FOO": {
"name": "Donald",
"location": "Stockholm"
},
"BAR": {
"name": "Walt",
"location": "Stockholm"
},
"BAZ": {
"name": "Jack",
"location": "Whereever"
}
}'
$ echo $a | jq '.[] | select(.location=="Stockholm")'
{
"name": "Donald",
"location": "Stockholm"
}
{
"name": "Walt",
"location": "Stockholm"
}
相反,我希望输出是这样的json列表:
[
{
"name": "Donald",
"location": "Stockholm"
},
{
"name": "Walt",
"location": "Stockholm"
}
]
如何用jq做到这一点?
答案 0 :(得分:2)
通常,您可以在任何表达式两边加上方括号,以将其所有输出收集到一个数组中。
const Discord = require('discord.js')
const bot = new Discord.Client()
bot.on('ready', () => {
console.log("connected");
});
bot.on('message', (message) => {
if(message.channel.id === '549389103071969869') {
if(message.length !== '4') {
message.delete()
}
}
});
有时候,不首先分解输入数组是有意义的,而是使用map对其进行变换:
[.[] | select(.location=="Stockholm")]