使用jq时,很容易选择要输出的键值,但默认情况下数组会消失。如何将输出保持为数组?
<标题>例子# My JSON
my_json='{"count":2,"values":[{"name": "Hans","age": 22},{"name": "John","age": 88}]}'
# Getting names
echo $my_json | jq ".values[].name"
"Hans"
"John"
我想要的
["Hans", "John"]
有了这样的输出,我可以通过输出到tsv来删除引号。
# Output to tsv
echo '["Hans", "John"]' | jq -r '.[]'
标题>
可以加上方括号(最好是)和c(压缩输出)选项,以便在单行上返回数组(如在问题中),例如
echo $my_json | jq -c '[.values[].name]'
不需要两个命令。你可以直接得到
Hans
John
通过使用printf %s "$my_json" | jq -r '.values[].name'
jqplay的演示