为什么 jq array returns length 大于 array items 的实际数量
Why jq array returns length is greater than actual no of array items
我有一个 json 文件
{
"file" : {
"a" : 1,
"b" : 2
}
}
我正在使用 jq
来计算此 json 对象中的键文件值的数量。
然后在 bash
上使用
arr=($(cat jsonfile.json | jq '.file' | jq -r 'keys'))
echo ${#arr[@]}
这里我得到输出 4 而只有 2 个键 a,b
为什么会这样,我如何得到 arr 只有两个元素 a
和 b
.?
要了解为什么会得到一个包含 4 个元素的数组,请查看子 shell:
的输出
cat jsonfile.json | jq '.file' | jq -r 'keys'
这会产生:
[
"a",
"b"
]
那里的每一行都成为数组的一个元素 -> 4 行。
试试这个:
jq -r '.file | keys | .[]' jsonfile.json
输出:
a
b
我也简化了你原来的表达方式。 (感谢@JeffMercado!)
我有一个 json 文件
{
"file" : {
"a" : 1,
"b" : 2
}
}
我正在使用 jq
来计算此 json 对象中的键文件值的数量。
然后在 bash
上使用arr=($(cat jsonfile.json | jq '.file' | jq -r 'keys'))
echo ${#arr[@]}
这里我得到输出 4 而只有 2 个键 a,b
为什么会这样,我如何得到 arr 只有两个元素 a
和 b
.?
要了解为什么会得到一个包含 4 个元素的数组,请查看子 shell:
的输出cat jsonfile.json | jq '.file' | jq -r 'keys'
这会产生:
[ "a", "b" ]
那里的每一行都成为数组的一个元素 -> 4 行。
试试这个:
jq -r '.file | keys | .[]' jsonfile.json
输出:
a b
我也简化了你原来的表达方式。 (感谢@JeffMercado!)